admin 管理员组文章数量: 887032
设线性表 A=(a1, a2, ..., am),B=(b1, b2,..., bn) ,试写一个按下列规则合并 A,B为线性表 C的算法,即使得 C = (a1, b1,..
NOTICE: 本题代码是按照源码顺序粘贴的,复制可直接运行
环境: Visual Stdio Code
题目
设线性表 A=(a1, a2, ..., am),B=(b1, b2,..., bn) ,试写一个按下列规则合并
A,B为线性表 C的算法,即使得
C = (a1, b1,..., am, bm, bm+1,..., bn) 当 m <= n 时;
C= (a1, b1,..., an, bn, an+1, ..., am) 当 m >= n 时;
线性表 A,B和 C均以单链表作存储结构,且 C表利用 A表和 B 表中的结点空间 构成。注意:单链表的长度值 m和 n 均未显式存储。
分析
可以看出,不论是 A 的长度长还是 B 的长度长,最终 C 链表中的首元结点都是 A 链表的首元结点,所以只需要让 C = A 即可。
本算法的大致方法就是多次插入,即:将 B 链表中的元素插入 A 链表中,最后再处理一下长度的问题即可。
处理长度可以利用如下思路:
当 A 链表长度大时直接正常插入就行(因为 B 链表长度较短,所以当循环到大于 B 链表之后就是单纯的遍历 A 链表的剩下节点);
当 B 链表长度大时,循环完成之后需要将 A 链表的最后一个节点的 next 指向 B 链表剩下的节点。
代码:
初始化:
#include<stdio.h>
#includ
本文标签: 设线性表 A(a1 A2 am),B(b1 b2
版权声明:本文标题:设线性表 A=(a1, a2, ..., am),B=(b1, b2,..., bn) ,试写一个按下列规则合并 A,B为线性表 C的算法,即使得 C = (a1, b1,.. 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1699472107h358702.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论