📄 cpp1.cpp
字号:
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
LNode *next;
}LNode,*LinkList,*Position;
//判断链表是否为空
int IsListEmpty(LinkList L){
return(L->next==NULL);
}
//合并两个循环链表
LinkList MergeCList(LinkList L1,LinkList L2){
Position p1=L1->next,p2=L2->next,pl=L1;
while(p1!=L1&&p2!=L2){
if(p1->data>=p2->data){
pl->next=p2;
pl=p2;
p2=p2->next;
}
else{
pl->next=p1;
pl=p1;
p1=p1->next;
}
}
pl->next=(p1!=L1? p1:p2);
if(p2!=L2){
while(p2->next!=L2)
{p2=p2->next;
}
p2->next=L1;
}
return L1;
}
void CreateCList_L(LinkList *L,int n){
LinkList p;
Position pl;
int i;
*L=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
pl=*L;
printf("输入%d个数据:",n);
for(i=0;i<n;i++){
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
pl->next=p;
pl=p;
}
p->next=*L;
}
void OutputC(LinkList L){
LNode *p;
p=L->next;
if(IsListEmpty(L))
printf("链表为空");
while(p!=L){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void main(){
LinkList L1,L2,L3;
int num1,num2;
printf("输入链表长度:");
scanf("%d",&num1);
CreateCList_L(&L1,num1);
printf("输入链表长度:");
scanf("%d",&num2);
CreateCList_L(&L2,num2);
L3=MergeCList(L1,L2);
OutputC(L3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -