将两个递增的有序链表合并为一个递增的有序链表.【数据结构】【线性表】


编写一个函数完成如下功能:将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来的链表空间,不另外占用其他的存储空间。表中不允许有重复的数据。

要求,在主函数中调用上面的函数测试。

提示:还需要定义其他函数,比如初始化链表,构造单链表,输出单链表。


#include
using namespace std;
//定义单链表
typedef struct  LNode
{int data;struct LNode *next;
}LNode,*LinkList;
//初始化单链表
int InitList(LinkList &L)
{L = new LNode;L->next = NULL;return 0;
}
//构造单链表
int ConsList(LinkList &L)
{cout << "输入赋值的个数:" ;int n;cin >> n;LinkList r = L;cout << "输入链表:";for (int i = 0; i < n; i++) {LinkList p = new LNode;cin >> p->data;p->next = NULL;r->next = p;r = p;}return 0;
}

//合并
void MergeList_L(LinkList &LA,LinkList &LB,LinkList &LC){LinkList pa = LA->next;     LinkList pb = LB->next;LC = LA;LinkList pc = LC;while (pa && pb){if (pa->data < pb->data){pc->next = pa;pc = pa;pa = pa->next;}else if(pb->datadata){pc->next = pb;pc = pb;pb = pb->next;}else{pc->next = pa;pc = pa;pa = pa->next;LinkList p = pb;pb = pb->next;delete p;}}if (pa) {pc->next = pa;}else{pc->next = pb;}delete LB;
}
//输出链表
void print(LinkList L){LinkList p = L->next;while(p){cout << p->data<<" ";p = p->next;}
}

int main() 
{cout << "请输入第一个递增的链表:"<

输出结果: 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部