链式有序表的合并中,为什么要把第二个表的头结点释放掉?

jmyz_0455 2016-01-29 10:56:57
在链式有序表的合并中,假设头指针为 LA 和 LB 的单链表分别为线性表 LA 和 LB 的存储结构,归并 LA 和 LB 得到单链表 LC。

网上很多教材的算法描述里,最后都要把 LB 的头结点释放掉,就这一点我想不明白。请问:

1、为什么要释放 LB 的头结点?

2、那么释放掉头结点的线性表 LB 是不是就不存在了(被删掉)?

3、如果2的答案是「是」,那么为什么合并线性表 LA 和 LB 之后要只剩下 LA 和 LC ?不应该是三个表都保留吗?

就是想不明白释放 LB 头结点是为了什么,可能我有些很基础的概念遗漏了?请各位指点一下。
...全文
559 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello 典 2017-04-11
  • 打赏
  • 举报
回复
我也很纳闷啊。
jmyz_0455 2016-01-30
  • 打赏
  • 举报
回复
书本里的代码是这样的,注释没打:
void MergeList_L(LinkList &LA, LinkList &LB, LinkList &LC)
{
pa = LA->next; pb = LB->next;
LC = LA;
pc = LC;
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
pc->next = pa ? pa : pb;
delete LB;
}
} 

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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