#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType elem;
LNode *next;
}LNode;
typedef LNode* LinkList;//相当于*linkList,即char *a;的结构,相当于数组
void CreateList(LinkList &L,int n);//n为循环的时候要用,为输入了多少个数
void Output(LinkList &L);
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc);//合并
int main(){
LinkList La,Lb,Lc;
int n=5;
CreateList(La,n);
Output(La);
CreateList(Lb,n);
Output(Lb);
MergeList(La,Lb,Lc);
Output(Lc);
}
void CreateList(LinkList &L,int n){
LNode* p;
L=(LinkList)malloc(sizeof(LNode));//LinkList相当于LNode,L为头节点
L->next=NULL;//让最后一个指向NULL
for(int i=n;i>0;i--){
p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&p->elem);
p->next=L->next;//L->next;为L原来的next
L->next=p; //L现在的next;
}
}
void Output(LinkList &L){
LNode *p;
p=L->next;
while(p){
printf("%d",p->elem);
p=p->next;//移动到下一步的节点
printf(" ");
}
printf("\n");
}
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){
LNode *pa,*pb,*pc;
pa=La->next;
pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->elem<=pb->elem){
pc->next=pa;
pc=pa;
pa=pa->next;
}
else{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next= pa?pa:pb;//直接两个串进行拼接,条件运算符优先于赋值运算符
free(Lb);
}
两个非降序单链表的连接
最新推荐文章于 2020-10-26 19:56:14 发布