基本数据结构:链表(list)(2)
2012-07-31 17:46
435 查看
接上篇
第九步,实现insert()和insertHead()函数,在p节点后插入值为x的节点。如图5。
代码如下:
最终,我们完成一个简单的单向链表。此单向链表代码还有很多待完善的地方,以后会修改代码并不定时更新。
二、 双向链表
双向链表的指针域有两个指针,每个数据结点分别指向直接后继和直接前驱。单向链表只能从表头开始向后遍历,而双向链表不但可以从前向后遍历,也可以从后向前遍历。除了双向遍历的优点,双向链表的删除的时间复杂度会降为O(1),因为直接通过目的指针就可以找到前驱节点,单向链表得从表头开始遍历寻找前驱节点。缺点是每个节点多了一个指针的空间开销。如图6就是一个双向链表。
三、 循环链表
循环链表就是让链表的最后一个节点指向第一个节点,这样就形成了一个圆环,可以循环遍历。单向循环链表可以单向循环遍历,双向循环链表的头节点的指针也要指向最后一个节点,这样的可以双向循环遍历。如图7就是一个双向循环链表。
四、 链表相关问题
1、如何判断一个单链表有环
2、如何判断一个环的入口点在哪里
3、如何知道环的长度
4、如何知道两个单链表(无环)是否相交
5、如果两个单链表(无环)相交,如何知道它们相交的第一个节点是什么
6、如何知道两个单链表(有环)是否相交
7、如果两个单链表(有环)相交,如何知道它们相交的第一个节点是什么
本文出自 “C小加&SunRise” 博客,请务必保留此出处http://lwxcy.blog.51cto.com/2467073/949204
第九步,实现insert()和insertHead()函数,在p节点后插入值为x的节点。如图5。
代码如下:
template<class T> void myslist<T>::insert(T x,slistNode<T>* p) { if(p==NULL) return; node=new slistNode<T>();//申请一个新的空间 node->data=x;//如图5 node->next=p->next; p->next=node; if(node->next==NULL)//如果node为尾节点 lastnode=node; } template<class T> void myslist<T>::insertHead(T x) { node=new slistNode<T>(); node->data=x; node->next=headnode; headnode=node; }
最终,我们完成一个简单的单向链表。此单向链表代码还有很多待完善的地方,以后会修改代码并不定时更新。
二、 双向链表
双向链表的指针域有两个指针,每个数据结点分别指向直接后继和直接前驱。单向链表只能从表头开始向后遍历,而双向链表不但可以从前向后遍历,也可以从后向前遍历。除了双向遍历的优点,双向链表的删除的时间复杂度会降为O(1),因为直接通过目的指针就可以找到前驱节点,单向链表得从表头开始遍历寻找前驱节点。缺点是每个节点多了一个指针的空间开销。如图6就是一个双向链表。
三、 循环链表
循环链表就是让链表的最后一个节点指向第一个节点,这样就形成了一个圆环,可以循环遍历。单向循环链表可以单向循环遍历,双向循环链表的头节点的指针也要指向最后一个节点,这样的可以双向循环遍历。如图7就是一个双向循环链表。
四、 链表相关问题
1、如何判断一个单链表有环
2、如何判断一个环的入口点在哪里
3、如何知道环的长度
4、如何知道两个单链表(无环)是否相交
5、如果两个单链表(无环)相交,如何知道它们相交的第一个节点是什么
6、如何知道两个单链表(有环)是否相交
7、如果两个单链表(有环)相交,如何知道它们相交的第一个节点是什么
本文出自 “C小加&SunRise” 博客,请务必保留此出处http://lwxcy.blog.51cto.com/2467073/949204
相关文章推荐
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list) - C小加 - C++博客
- 基本数据结构:链表(list)
- 基本数据结构之链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)(1)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 基本数据结构:链表(list)
- 算法导论第十章 基本数据结构实现(栈,队列,链表),课后题答案
- 基本数据结构(2) —— 链表
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 基本数据结构——栈、队列和链表
- 关于数据结构->链表的一些基本操作
- Python随身听基础篇03-基本数据结构list和dict
- ※数据结构※→☆线性表结构(list)☆============单向循环链表 链式存储结构(list circular single)(四)