关于C语言数据结构双向链表插入节点的一点问题

s为待插入节点 请写出步骤将s节点插入p节点前面

1 s->prior=p->prior; 这一步是将p的前驱指针地址值赋给s的前驱指针吗?
2 p->prior->next=s; 看不懂
3 s->next=p; 为什么不是s->next=p->prior
4 p->prior=s; 为什么不是 p->prior=s->next
p s prior next四个指针 弄的我要疯了。。。

很简单的双向链表的插入问题

s->prior=p->prior; //就是s的前驱指针指向p的前面节点,节点地址就是p->prior

现在p的前面节点的后驱指针就是 p->prior->next 指向 s 就行

现在 s的前驱指针操作完成, 然后就是操作s的后驱指针了
s的后驱指针就是s->next 指向 p
最后就是p的前驱指针 p->prior 指向 s节点就行,就完成插入了追问

p->prior->next指向s是什么意思?是指向s里面的所有元素吗?

追答

每个节点都有一个首地址,指针是指向s节点的首地址的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-27

    是的,意思就是把p节点的前驱节点的地址给s的前驱节点,(大意就是把s插到了p前面,而之前p前面的那个节点应该在s的前面,所以s的前驱应该存储之前p前面的节点的地址)

    意思是把 s节点的地址赋给 之前p前面的节点

    然后把p的地址给s的后驱(而你所说的那个s->next=p->prior   的意思就变成把插入前p节点的地址给了s的后驱,就变成了s指向的就是插入前p前面的节点了)

    最后把s节点的地址赋给了p所指向的前驱节点,彻底完成插入

这个直接理解起来是很抽象的,建议你去好好看一下c语言里面的结构体那一章节,关于结构体的构成,这样对于链表的插入或者删除就很好理解了,不会可以加我qq

相似回答