回 帖 发 新 帖 刷新版面

主题:[讨论]请大家帮一下忙关于链表的合并

实现两个链表的合并
  基本功能要求:
(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个回复)

沙发

如果是用C语言就比较容易理解,因为C对数组没有明确的限制。

用QB来说嘛,会有点困难,或者说换一个方式,
比如是不定长字符串,会比较容易理解。

板凳

使用动态数组
(1)
设A,B表初始为空,每加入一个数扩张一个数组下标
(2)
用UBOUND函数取得数组上限,设数组C,并依题意把二数组合并为一个数组
(3)
定义一个数组D和C一样大小
按要求的排序法把C排进D,输出D

3 楼

我用字符串比较容易,我还是用字符串好了。
有个前提就是数值都是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

我来回复

您尚未登录,请登录后再回复。点此登录或注册