无表头结点单链表的基本操作

已知L是无表头结点的单链表,且P既不是首元结点,也不是尾元结点:

1.在P结点后插入S结点

思路:在P结点之后插入结点S,只需要更改P和S结点的指针即可,即原先的P结点的直接后继作为S结点的直接后继,然后S结点变为P结点的直接后继,这两步操作的顺序不可改变

[1]:S->next = P->next;

[2]:P->next = S;

 

2.在P结点前插入S结点

思路是:先保存P结点,然后将单链表的第一个结点表示为P结点,然后从第一个结点开始遍历找到初始时的P结点的直接前驱,然后再在P结点的直接前驱后面插入S结点

 

Q = P; //将P结点赋给工作结点Q

P = L;//由于L是无表头的单链表,将L赋给P,也即是将P结点作为第一个结点

while (P->next != Q) { //此时的P结点为第一个结点,依次遍历,直到Q结点的前一个结点,此时的Q结点即为初始时的P结点

    P = P->next;

}

//此时的P结点即为初始时的P结点的直接前驱,以下的操作即为在P结点之后插入S结点

S->next = P->next;

P->next = S;

3.在表首插入S结点

S->next = L;

L = S;

4.在表尾插入S结点

思路:先找到最后一个结点,然后再最后一个结点的后面插入S结点,然后将S结点的指针域置空。

 

while (P->next != NULL) { //找到最后一个结点

    P = P->next;

}

//在最后一个结点之后插入S结点

P->next = S;

//因为S结点是最后一个结点,所以其指针域为空

S->next = NULL;

 

 

 

 

 

 

 

 

 

 

 

  • 42
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值