7-24 兩個有序連結串列序列的合併 (20 分)
題目:
已知兩個非降序連結串列序列S1與S2,設計函式構造出S1與S2合併後的新的非降序連結串列S3。
輸入格式:
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
輸出格式:
在一行中輸出合併後新的非降序連結串列,數字間用空格分開,結尾不能有多餘空格;若新連結串列為空,輸出NULL
。
輸入樣例:
1 3 5 -1
2 4 6 8 10 -1
輸出樣例:
1 2 3 4 5 6 8 10
程式碼:
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
#define LIST_INIT_SIZE 100000
#define LISTINCREMENT 10
#define mod 256
#define lowbit(x) (x&(-x))
#define mem(a,b) memset(a,b,sizeof(a))
#define FRER() freopen("in.txt","r",stdin);
#define FREW() freopen("out.txt","w",stdout);
using namespace std;
const int maxn = 10000 + 7;
typedef struct LNode{
int data;
struct LNode* next;
struct LNode* tail;
}LNode,*LinkList;
void CreateList(LinkList& L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
L->tail = NULL;
int n;
int cnt = 0;
while(~scanf("%d",&n)&&n!=-1){
LinkList p = (LinkList)malloc(sizeof(LNode));
p->data = n;
if(cnt==0){
L->next = p;
p->next = NULL;
L->tail = p;
}
else{
LinkList q = L->tail;
q->next = p;
p->next = NULL;
L->tail = p;
}
cnt++;
}
}
void print(LinkList L){
LinkList p = L->next;
if(p==NULL) printf("NULL\n");
else{
int i = 0;
while(p!=NULL){
if(i++) printf(" ");
printf("%d",p->data);
p = p->next;
}
printf("\n");
}
}
void MergeList(LinkList&A,LinkList&B,LinkList&C){
LinkList pa,pb,pc;
pa = A->next;
pb = B->next;
C = (LinkList)malloc(sizeof(LNode));
pc = C;
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;
}
int main(){
LinkList A,B,C;
CreateList(A);
CreateList(B);
MergeList(A,B,C);
print(C);
}
相關文章
- 7-2 兩個有序連結串列序列的合併 (20分)
- 合併兩個有序連結串列
- 02-線性結構1 兩個有序連結串列序列的合併 (15分)
- 兩個有序連結串列序列的交集
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- 遞迴:21. 合併兩個有序連結串列遞迴
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 【演算法-java實現】合併兩個有序連結串列演算法Java
- Fourth. LeetCode 21:MergeTwo Sorted Lists 合併兩個有序連結串列LeetCode
- 23. 合併K個元素的有序連結串列
- 讓我們一起啃演算法----合併兩個有序連結串列演算法
- JZ-016-合併兩個排序的連結串列排序
- 測試開發每日演算法 Leecode21. 合併兩個有序連結串列演算法
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- 前端菜鳥的每週一道演算法題(三) 合併兩個有序連結串列前端演算法
- 合併K個排序連結串列排序
- 將兩個升序連結串列合併為一個新的 升序 連結串列並返回。(新手篇06)
- 合併兩個有序陣列陣列
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- [每日一題] 第十八題:合併兩個排序的連結串列每日一題排序
- 88、合併兩個有序陣列陣列
- 反轉連結串列、合併連結串列、樹的子結構
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- LeetCode 之 JavaScript 解答第23題 —— 合併K個有序連結串列(Merge K Sorted Lists)LeetCodeJavaScript
- 88. 合併兩個有序陣列陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- 兩個有序陣列如何合併成一個有序陣列陣列
- leetcode23. 合併K個排序連結串列LeetCode排序
- leecode.23. 合併K個升序連結串列
- LeetCode 23. 合併K個排序連結串列LeetCode排序
- 【LeetCode】88. 合併兩個有序陣列LeetCode陣列
- 淺談歸併排序:合併 K 個升序連結串列的歸併解法排序
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- HBU DS 1-3 遞增的整數序列連結串列的插入 (20分)
- 18.合併兩個有序陣列(簡單)陣列
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構