C++数据结构---链表---插入操作

来源:互联网 发布:mysql字符串长度 编辑:程序博客网 时间:2024/05/20 16:42

插入操作

  1. 首先创建一个新的单元x,其中有:前驱节点,值,后继节点。
  2. 插入时分为两种情况,第一种为插入到某单元的前面,第二种为插入到某单元的后面。

第一种情况(插入到某单元的前面):
找到新的单元的待插入位置后,将这个位置上的单元p的前一个单元q的后继节点链接到x上,然后将p的前驱节点链接到x上,即可完成插入
操作。

C++模板代码如下:

template <typename T>ListNodePosi(T) List<T>::insertAsPred(T const& _Val){    ListNodePosi(T) x = new LideNode(_Val, pred, succ);    pred->succ = x; pred = x;    //这里的顺序不能变。因为如果将this节点的前驱给了x(即pred=x),那么再执行pred->succ = x时,pred->succ指向的就是this本身,this=x,显然错误!!    return x;}

第二种情况(插入到某单元的后面):
首先找到新的单元的待插入位置后,将这个位置上的单元p的后一个单元q的前驱节点链接到x上,然后将p的后继节点链接到x上,即可完成插入操作。

C++模板代码如下:

template <typename T>ListNodePosi(T) List<T>::insertAsSucc(T const& _Val){    ListNodePosi(T) y = new LideNode(_Val, pred, succ);    succ->pred = x; succ= x;    return x;}
原创粉丝点击