主题:[讨论]请大家帮一下忙关于链表的合并
mcm2006
[专家分:0] 发布于 2006-03-02 11:42:00
实现两个链表的合并
基本功能要求:
(1) 建立两个链表A和B,链表元素个数分别为m和n个。
(2) 假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线形表C,使得:
当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm
当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn
输出线形表C
(3) 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。
测试数据:
(1) A表(30,41,15,12,56,80)
B表(23,56,78,23,12,33,79,90,55)
(2)A表(30,41,15,12,56,80,23,12,34)
B表(23,56,78,23,12)
回复列表 (共3个回复)
沙发
moz [专家分:37620] 发布于 2006-03-02 12:15:00
如果是用C语言就比较容易理解,因为C对数组没有明确的限制。
用QB来说嘛,会有点困难,或者说换一个方式,
比如是不定长字符串,会比较容易理解。
板凳
QB71 [专家分:1300] 发布于 2006-03-03 12:04:00
使用动态数组
(1)
设A,B表初始为空,每加入一个数扩张一个数组下标
(2)
用UBOUND函数取得数组上限,设数组C,并依题意把二数组合并为一个数组
(3)
定义一个数组D和C一样大小
按要求的排序法把C排进D,输出D
3 楼
moz [专家分:37620] 发布于 2006-03-03 14:26:00
我用字符串比较容易,我还是用字符串好了。
有个前提就是数值都是0-255
print "input A:";
input ;"",ia
do while ia
a$=a$+chr$(ia)
print ",";
input ;"",ia
loop
print
print "input B:";
input ;"",ia
do while ia
b$=b$+chr$(ia)
print ",";
input ;"",ia
loop
la=len(a$)
lb=len(b$)
if la>=lb then
for i=1 to lb
c$=c$+mid$(a$,i,1)+mid$(b$,i,1)
next
c$=c$+mid$(a$,i)
else
for i=1 to la
c$=c$+mid$(b$,i,1)+mid$(a$,i,1)
next
c$=c$+mid$(b$,i)
endif
print "C is:";
for i=1 to len(c$)
print asc(mid$(c$,i,1));",";
next
d$=c$
for i=1 to len(d$)-1
for j=i+1 to len(d$)
if mid$(d$,i,1)>mid$(d$,j,1) then
e$=mid$(d$,i,1)
mid$(d$,i,1)=mid$(d$,j,1)
mid$(d$,j,1)=e$
endif
next j,i
print
print "D is:";
for i=1 to len(d$)
print asc(mid$(d$,i,1));",";
next
我来回复