双链表插入问题,如果在P结点后插入S结点的语句序列是

 我来答
cookie妈咪
2012-12-13 · TA获得超过1188个赞
知道小有建树答主
回答量:446
采纳率:50%
帮助的人:222万
展开全部
s->next=p->next;
p->next=s;
s->next->pro=s;
s->pro=p;

next表示后继,pro表示前驱。你画个图就会懂了,主要是在连接的过程中不能丢失了某些前驱后继的信息。
更多追问追答
追问
这几条语句顺序如何,还有如果是删除P结点的直接后继结点和直接前去结点那又该如何
追答
这几条的语句顺序,一定不要死记硬背,要理解怎样去写
你画个图,三个节点,分别画有前驱和后继然后自己去画,怎么样连就可以连接好,而不丢失链表后半部分的信息,比如说,如果你的第一个语句是p->next=s;
这样做,很显然p后面的那些节点你都将找不到了,避免这样的问题即可,顺序无所谓。

删除P节点的后继节点:
if(p->next!=NULL)
{
Node *q=p->next; //先记录好要删除的节点,让q指向它
if(q->next!=NULL) //q之后的节点不为空,如果为空,下面的第二句就是非法操作
{
p->next=q->next;
q->next->pro=p; //这两句连好P与要删除节点之后的节点
}
else //q之后的节点为空,那么直接删除q,p的next赋空值就可以了
{
p->next=NULL;
}
delete q; //最后记得释放节点,否则造成内存泄露
}
删除前驱节点我就不写了,如果你真想学的话,自己动动脑子也一定能写出来。
来自:求助得到的回答
king离歌无言
2012-12-13 · 超过13用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:32万
展开全部
s->prior=p;
s->next=p->next;
p->next->prior=s;
p->next=s;
追问
亲 这个貌似不对啊
追答
?哪不对了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式