链表操作总结-包括链表合并、插入删除、清空复制、逆序


A. 关于有序表合并操作
线性结构合并操作可以分为两类,一类是顺序表(顺序存储),另一类是链表(链式存储),二者在有序表合并时的操作并不完全相同。详细分析如下:
①顺序表:由于顺序表属于顺序存储结构,当需要插入或删除表中元素时需要移动该位置后续的各元素,所以按通常方法,应开辟一个临时的存储表,用于存放合并后的数据。如不开辟一个临时的顺序表用于存储合并后的内容,则需在每次插入时移动后续元素,时间复杂度更大。
基本操作:
i. 开辟临时存储空间,数组长度为A表长度+B表长度;
ii. 取A,B中第一个元素a0,b0进行比较:如a0小于b0,将a0放入临时数组,a0变为a1继续比较;如a0小于等于b0,将b0放入临时数组,b0变为b1继续比较。重复操作。
iii. 当A或B表到达数组尾部时结束循环。
iv. 当A未到数组尾部,则将剩余部分放入临时数组;当B未到数组尾部,则将剩余部分放入临时数组。上述二个操作最后只会执行其一。
v. 将临时数组的值通过循环赋值给A表并返回。
具体的算法略。

②单链表 单链表的优点在于插入和删除结点时无需移动元素,因此不用开辟额外的临时存储空间用于存放最终结果,可直接修改其中一个链表以得到结果并返回。
基本操作:
i. 声明指针变量pa指向A的头结点,声明pb指向B的首元结点(这里默认链表有头结点Lnode)。
ii. 比较pa->next->data和pb->data,如pa->next->data>pb->data。那么将pb结点放在pa之后,并删除pb所指结点;如 pa->next->data<pb->data,pa = pa->next。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值