当前位置: 代码迷 >> C语言 >> 后插结点
  详细解决方案

后插结点

热度:177   发布时间:2006-02-13 12:57:00.0
后插结点
后插结点,设p指向单链表中某结点,s指向待插入的值为x的新结点,将s插入到*p的后面.操作如下:
s->next=p->next;
p->next=s;
=================================
把s插到p的后面,为什么是s->next=p->next;
??
搜索更多相关的解决方案: 结点  

----------------解决方案--------------------------------------------------------
这样做是因为要保存p->next原来的信息
这样做的情况一般出现在两个场合
1、存在尾节点的情况,所谓尾节点指的就是一个特殊的节点,他也是一个节点,但是他所代表的意义不同,他表示链表的结束
2、在链表中间插入节点的情况
其实这两中情况都属于同一情况,那就是插入操作。

比如 如果p->next指向的是x节点,我想在p和x之间插入一个s,怎么做呢?
s->next = p->next //这个时候s->next和p->next同时指想x节点,起到了保存p->next原有信息的作用
p->next = s; //重新定向p->next,把p->next指向s节点,而这个时候s->还是指向x节点的

所以便形成了p -> s -> x的链表

----------------解决方案--------------------------------------------------------
谢了,偶终于懂了!!!

还有点小疑问,为什么要保存p->next的原有信息?
----------------解决方案--------------------------------------------------------
p->next的信息就是x节点的地址
如果不保存它,那么x节点就会丢失在内存中,你再也找不到他啦
----------------解决方案--------------------------------------------------------


赞一个
----------------解决方案--------------------------------------------------------
我觉得 学链表的时候还是画画图比较好
拿个箭头指指就明白了
----------------解决方案--------------------------------------------------------
书上的确有图,图能明白
----------------解决方案--------------------------------------------------------
  相关解决方案