分类: C/C++
2008-03-09 16:04:20
双链表的插入操作的核心代码的理解:
设pin指针指向第i-1个位置,s是当前要插入元素的指针;我们写代码的要求是:
首先对这个要插入元素的prior和next进行赋值,之所以这样子.是为了确保还能够对第i个元素进行访问(甚至是更后面的元素),故一开始不能把pin->next赋值,而是如上所说的操作是正确的.这里相当于一个拆桥的问题,怎么样拆还能过去.当完成之后,自然就能通过s->next->prior来访问或连接到第i个元素,这时就可以pin->next=s.最后还有一个问题:即i位置可能是最后的元素.此时只要一个判断就行了.不是则进行,s->next->prior=s.
这段代码如下:
|
这里还有一个有意思的现象:当插入位置是最后时,s-next=pin->next;相当于一个链表尾的传递,注意双链表的特点是,结点没有前驱的结点,尾结点没有后继的结点.