首先我想写这篇文章的原因是我用google搜索,但是没有找到很多有关哨兵在链表中的使用,如果有的话,也只是轻描淡写的写了写代码,没有明确说明使用哨兵的好处,这篇文章说明了用哨兵实现有序和无序链表的好处。
首先定义一个节点的结构.
struct Node { int value; Node* next; Node() : value(0), next(0) {} Node(int v, Node* n) : value(v), next(n) {} };
通常我们写链表插入函数的时候,要分两种情况:
(1)链表头为空
(2)链表头不为空
如果为空的话,函数就需要改变Head指向的节点,因此,如果insert函数如果有head参数的数的话,那就得必须是head的引用(Node* &head)或指向head的指针(Node*