循环链表与单向链表十分相似,两者唯一不同之处就是,循环链表的尾节点的next属性指向了链表的首节点(非头节点,头节点是没有数据的,头节点的下一个有数据的节点我们称为首节点)。他的表现形式有常见的两种,如下图:
线性表顺序储存
线性表,是一个或多个数据元素的集合,数据之间是连续的一段内存。线性表的特性如下。
- 数据元素之间是有顺序的
- 数据元素个数是有限的
- 数据元素的类型必须相同
STL 常用方法集合
我本想将 STL 中各种容器的实现方法和作用全部写一遍,然后每种容器都发一篇文章,但后来发现这样做的意义不大,在 MSDN 或其他一些帮助文档中,他们比我写的要详细,其实我只需要记住每种容器的常用方法,和在什么场合选择合适的容器。下面这张表是我这里的一些常用方法集合。备用参考。
双向链表创建/插入/删除/排序
双向链表有别于单向链表,对于数据的排列、查找更加方便,但需要付出的小小代价则是在数据结构中增加一个指向上一个节点的指针,除了结构上的变化,对于我们理解也相对复杂了一些。
二分查找(折半查找)法
二分查找的前提是数据一定要有序,否则一切皆为空谈。通过有序的一段数据使用二分查找较常规遍历查找算法速度要快一些。其中二分查找发有两种实现,一种为常规while循环,另外一种为递归。具体的实现步骤如下: