关于C语言数据结构双向链表插入节点的一点问题
s为待插入节点请写出步骤将s节点插入p节点前面1s->prior=p->prior;这一步是将p的前驱指针地址值赋给s的前驱指针吗?2p->prior->next=s;看...
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四个指针 弄的我要疯了。。。 展开
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四个指针 弄的我要疯了。。。 展开
2个回答
展开全部
很简单的双向链表的插入问题
s->prior=p->prior; //就是s的前驱指针指向p的前面节点,节点地址就是p->prior
现在p的前面节点的后驱指针就是 p->prior->next 指向 s 就行
现在 s的前驱指针操作完成, 然后就是操作s的后驱指针了
s的后驱指针就是s->next 指向 p
最后就是p的前驱指针 p->prior 指向 s节点就行,就完成插入了
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节点的首地址的
展开全部
是的,意思就是把p节点的前驱节点的地址给s的前驱节点,(大意就是把s插到了p前面,而之前p前面的那个节点应该在s的前面,所以s的前驱应该存储之前p前面的节点的地址)
意思是把 s节点的地址赋给 之前p前面的节点
然后把p的地址给s的后驱(而你所说的那个s->next=p->prior 的意思就变成把插入前p节点的地址给了s的后驱,就变成了s指向的就是插入前p前面的节点了)
最后把s节点的地址赋给了p所指向的前驱节点,彻底完成插入
这个直接理解起来是很抽象的,建议你去好好看一下c语言里面的结构体那一章节,关于结构体的构成,这样对于链表的插入或者删除就很好理解了,不会可以加我qq
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询