赞
踩
总体思路—前驱后继
链表中前驱和后继就是指当前结点的前一个和后一个结点分别是什么,我们把要插入的结点作为当前结点。如图所示:
q是为了便于理解自己添加的,对于原链表,实际上有:
p->prior=q;
p->prior->next=p;//q->next=p能理解吧?把q用p->prior代就完事了
1.前驱(即图①)—和前面结点相连
s->prior=q;
2.后继(即图③)—和后面结点相连
s->next=p;
至此,已经实现了单方向的插入,我们还需进行第二步
1.p的前驱(即图④)
p->prior=s;
1.q的后继(即图②)
q->next=s;
至此,双向链表的思路就结束了,然后把数据e存放进s结点
再按照图中的顺序,总结就是:s前驱q后继;s后继p前驱
//再次说明q只是楼主为了方便理解自己加的,总是绕糊涂的小伙伴们也可以试着把三个结点都写一个符号
//完整代码就按照书本规范写了,只有s&p
完整代码:
s->data=e; //将要插入的数据e存放进s
s->prior=p->prior; //s前驱,等同s->prior=q
p->prior->next=s; //q后继,等同q->nexr=s;
s->next=p; //s后继
p->prior=s; //p前驱
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。