嗨,朋友们,你懂得,写篇博文不容易!
这次写的这个篇博文是关于双向循环链表。呵呵,双向链表,只要你知道其中任何一个节点的地址,就可以遍历表中其它任何一个节点。不错吧。不错的数据结构,没事,自己写了一个,基本功能是实现了,但是有点马虎,如果需要,可以在我的基础上修改,是吧,伙计。互相进步!废话少说,进入正题吧。
链表的功能,无非就是那么几个:删除,添加,查找定位,置空,确定链表长度,链表是否为空。哦,这些基本的功能,如果你都能很容易的实现,那你就相当不错了,来吧,跟我来,看看我是怎么实现的,我们探讨一下,获取对你有帮助。我很高兴我的博文会对你有帮助。嘿嘿 ~
什么,要代码!等等,伙计,不要着急,代码,我会给你的,我没有那么吝啬,是吧。首先,我分析一下我是怎么实现的,看过我的别的博文的朋友,可能会了解我实现各种链表的习惯,那就是定位一个 head 节点,有什么用?大了说,什么用也没有,就是容易定位,小了说还是什么用也没有,你需要亲自实现一下的,看看有没有的区别在哪里,是的,我说的,你该自己去做做。在我的双向循环链表中,我没有改变我的习惯,还是老样子,来吧。跟着我的 head 走吧,去瞧瞧别的功能是怎么实现的。哈哈。你瞧好了。
struct Node
{
Node *lLink; // 左链指针
int value; // 节点数据值
Node *rLink; // 右链指针
};
这个结构要我多说吗?也许是不应该了。如果非要我说,也许我会说脏话了,我可是文明人。对吧,伙计!
class DblList { public: DblList(Node *&); ~DblList(); int Length(); //计算双向循环链表的长度 int IsEmpty(); //判断链表是否为空 int Find(const int &); //在链表中寻找特定值 void Insert(const int &); //在链表中插入新节点 void Remove(); //删除某个节点 void ShowList(); //列出所有链表中的元素 void MakeEmpty(); //将链表置空 private: Node *First, *Current; };
这个是实现功能的类,很简单,没有什么特别的,你该懂得。其实,在每个函数的内部才是重点。是的,代码,我都贴出,自己看好了。如果有问题, call me ! ok ?伙计,或者留言,或者 ….. 或者 …… 不说了,你懂得!
代码下载地址:http://download.csdn.net/source/3184214