#include <stdio.h>
#include <malloc.h>
typedef struct LNode{ //定義結構體
int data;
struct LNode *next;
}Node,*LinkList;
void InitList(LinkList &); //初始化鏈表
void output(LinkList); //遍歷鏈表
void merge(LinkList & , LinkList &); //合并鏈表
int main(void){
LinkList L;
printf("請輸入第一個鏈表(輸入-1表示結束):");
InitList(L);
output(L);
LinkList S;
printf("請輸入第二個鏈表(輸入-1表示結束):");
InitList(S);
output(S);
merge(L,S);
return 0;
}
void InitList(LinkList &L){ //初始化鏈表
L = (Node*)malloc(sizeof(Node));
L->next = NULL;
int e;
Node *p = L;
scanf("%d",&e);
while(e != -1){
Node *s = (Node*)malloc(sizeof(Node));
s->data = https://www.cnblogs.com/Timesi/p/e;
s->next = p->next;
p->next = s;
p = s;
scanf("%d",&e);
}
}
void output(LinkList L){ //遍歷鏈表
Node *p = L->next;
printf("當前鏈表是:");
while(p != NULL){
printf("%d ",p->data);
p = p->next;
}
printf("/n");
}
void merge(LinkList &L , LinkList &S){ //合并鏈表
Node *La = L->next;
Node *Ls = S->next;
LinkList C = L;
Node *Lc = L;
while(La != NULL && Ls != NULL){
if(La->data <= Ls->data){
Lc->next = La;
Lc = La;
La = La->next;
}else{
Lc->next = Ls;
Lc = Ls;
Ls = Ls->next;
}
}
if(La != NULL){
Lc->next = La;
}
if(Ls != NULL){
Lc->next = Ls;
}
free(S);
output(C);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/57187.html
標籤:其他
上一篇:簡單DP(動態規劃)
下一篇:c++ STL總結
