当前位置:首页 > 编程笔记 > 正文
已解决

B (1089) : DS单链表--合并

来自网友在路上 175875提问 提问时间:2023-10-09 01:27:19阅读次数: 75

最佳答案 问答题库758位专家为你答疑解惑

Description

假定两个单链表是递增有序,定义并实现以下函数,完成两个单链表的合并,继续保持递增有序

int LL_merge(ListNode *La, ListNode *Lb)

Input

第1行先输入n表示有n个数据,接着输入n个数据

第2行先输入m表示有M个数据,接着输入m个数据

Output

输出合并后的单链表数据,数据之间用空格隔开

Sample

 

AC代码:

//请勿直接复制粘贴,答案仅供参考
#include<iostream>
using namespace std;
#define ok 0
#define error -1// 链表结点定义
class ListNode
{
public:int data;ListNode* next;ListNode() { next = NULL; }
};
// 带头结点的单链表类定义
class LinkList
{
public:ListNode* head;int len;// 操作定义LinkList();void LL_set(int i) {len = i;int item;ListNode* p;p = head;for (int j = 0; j < i; j++) {cin >> item;ListNode* s = new ListNode;s->data = item;s->next = p->next;p->next = s;p = s;}}; // 初始化链表void LL_merge(LinkList La, LinkList Lb) { ListNode* p1 = La.head->next;ListNode* p2 = Lb.head->next;ListNode* p3 = head;while (p1 && p2) {if (p1->data > p2->data) {p3->next = p2;p3 = p2;p2 = p2->next;}else {p3->next = p1;p3 = p1;p1 = p1->next;}}p3->next = p1 ? p1 : p2;LL_display();};void LL_display();              // 输出单链表的内容
};
LinkList::LinkList()
{head = new ListNode();len = 0;
}
void LinkList::LL_display()
{ListNode* p;p = head->next;while (p){cout << p->data << ' ';p = p->next;}cout << endl;
}int main() {LinkList *a = new LinkList;LinkList *b = new LinkList;int t1, t2;cin >> t1;a->LL_set(t1);cin >> t2;b->LL_set(t2);ListNode* p1;ListNode* p2;p1 = a->head;p2 = b->head;LinkList* c = new LinkList;c->LL_merge(*a,*b);
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"B (1089) : DS单链表--合并":http://eshow365.cn/6-17540-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!