本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。
一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。
如有侵权,请留言作删文处理。
课程视频链接:
数据结构与算法基础–第04周10–2.7线性表的应用3–有序表的合并–用链表实现
📚 【Week04】10_有序表的合并(用链表实现)

用 La 或 Lb 的头结点作为 Lc 的头结点都可以,这里用 La 的头结点作为 Lc 的头结点。

【算法描述】
void MergeList L(LinkList &La,LinkList &Lb,LinkList &Lc){
pa=La->next;pb=Lb->next;
// 用 La 的头结点作为 Lc 的头结点
pc=Lc=La;
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;
// 释放 Lb 的头结点
delete Lb;
}
本文介绍了如何使用链表实现有序表的合并,具体算法详细展开,包括设置头结点,比较节点数据进行合并,以及处理剩余段。该过程的时间复杂度为O(ListLength(La)+ListLength(Lb)),空间复杂度为O(1)。文章还分享了青岛大学王卓老师的数据结构与算法教学视频资源。
400

被折叠的 条评论
为什么被折叠?



