单链表插入操作

URL:http://jpkc.onlinesjtu.com/CourseShare/Courses/ResourceModule/PreReading.aspx?courseid=701018&nodid=238&chapterid=238&preid=16

单链表的插入操作

1)已知线性链表head,在p指针所指向的结点后插入一个元素x.
在一个结点后插入数据元素时,操作较为简单,不用查找便可直接插入.

操作过程如下图所示:

相关的语句如下:

{ s=(slnodetype*)malloc(sizeof(slnodetype));      //申请一个结点s

   s->data=x;          //s的数据域存入x

   s->next=p->next;p->next=s;}          //s结点插入到p结点之后

 

2)已知线性链表head,在p指针所指向的结点前插入一个元素x.

前插时,必须从链表的头结点开始,找到P指针所指向的结点的前驱。设一指针q从附加头结点开始向后移动进行查找,直到p的前趋结点为止。然后在q指针所指的结点和p指针所指的结点之间插入结点s。

操作过程如下图所示:

相关的语句序列如下:

{q=head;      //q在程序中是用来表示结点p 的直接前驱结点,在寻找之前,先对q初始化,指向头结点

  while(q->next!=p) q=q->next;    //寻找p结点的前驱结点q
  s=(slnodetype*)malloc(sizeof(slnodetype));      //创建新结点s
  s->data=x;     //新结点s的数据域保持数据x
  s->next=p;     // 接下来两个语句用于将s 结点插入到q结点之后

  q->next=s;}

阅读此篇文章时,注意到在单链表中某个结点之前或者之后插入一个新的结点的操作是完全不一样的。

转载于:https://www.cnblogs.com/wuyuankun/p/4184966.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值