严版数据结构中 算法2.2 的问题!!

jianwei824 2008-11-10 07:58:43
将两个数据元素非递减有序排列的线性表LA,LB,合并成一个新表LC,仍非递减有序排列

请问以下的三个while是不是有逻辑错误啊?小弟初学 请指点一二!
void MergeList(List La,List Lb,List &LC)
{
InitList(Lc);
i=j=1;k=0;
La_len=ListLength(La); Lb_len=ListLength(Lb);
while((i<=La_len)&&(j<=La_len))
{
GetElem(La,i,ai);GetElem(Lb,j,bj);
if(ai<=bj){ListInesert(Lc,++k,ai);++i;}
else {ListInesert(Lc,++k,bj)};++j;}
}
while(i<=La_len)
{
GetElem(La,i++,ai);ListInesert(Lc,++k,ai);
}
while(j<=Lb_len)
{
GetElem(Lb,j,bj);ListInesert(Lc,++k,bj);
}
}
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

第二个和第三个循环只能执行其一
  • 打赏
  • 举报
回复

第一个循环(都没有遍历完) 把较小的一个放到listC

第二个循环(此时Lb遍历完) 把La后面的结点放到listC

第三个循环(此时La遍历完) 把Lb后面的结点放到listC
hznat 2008-11-10
  • 打赏
  • 举报
回复
1.while 比较2个队列,将较小的一个放到listC
2.后面2个while只有一个会成立,将多余的不用比较的放到listC
hznat 2008-11-10
  • 打赏
  • 举报
回复
没有问题。把你理解的写出来。可以让其他人帮你更正。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧