📄 chengjibiao.txt
字号:
#include <stdio.h>
#include <stdlib.h>
typedef struct student{
int number;
struct student * next;
}LNode,*Link_list;
void Creat_list(Link_list &L,int n){ //創建鏈表
L=(Link_list)malloc(sizeof(LNode));
L->next=NULL; Link_list p;
for(int i=n;i>0;i--){
p=(Link_list)malloc(sizeof(LNode));
scanf("%d",&p->number);
p->next=L->next;
L->next=p;
}
}
void Creat_list_l(Link_list &L,Link_list &L1){ //創建鏈表
L1=(Link_list)malloc(sizeof(LNode));
L1->next=NULL; Link_list p,p1=L->next;
while(p1){
p=(Link_list)malloc(sizeof(LNode));
p->number=p1->number;
p1=p1->next;
p->next=L1->next;
L1->next=p;
}
}
void Print_list(Link_list L){ //輸出鏈表
Link_list p=L->next;
while(p){
printf("%d ",p->number);
p=p->next;
}
printf("\n");
}
void merglist(Link_list La,Link_list Lb,Link_list &Lc)
{
Link_list pa,pb,pc;
pa=La->next;
Lc=pc=La;
while(pa)
{
pb=Lb->next;
while(pb){
if(pa->number==pb->number){
pc->next=pa; pc=pa; pa=pa->next; break;
}
pb=pb->next;
}
if(!pb)
pa=pa->next;
}
pc->next=NULL;
//free(Lb);
}
void Mergelist(Link_list La,Link_list Lb,Link_list &Lc){ //對兩個鏈表合并
Link_list pa=La->next;
Link_list pb=Lb->next,pc;
Lc=pc=La;
while(pa&&pb){
if(pa->number<pb->number){
pc->next=pa;pc=pa;pa=pa->next;
}
else
if(pa->number==pb->number){
pc->next=pa; pc=pa; pa=pa->next; pb=pb->next;
}
else{
pc->next=pb;pc=pb;pb=pb->next;
}
}
pc->next=pa?pa:pb;
//free(Lb);
}
int main(){
printf("請輸入學生個數n:");
int n; Link_list L1,L2,L3,L4,L5;
scanf("%d",&n);
printf("\n请为链表一输入n个数据:\n");
Creat_list(L1,n);
printf("\n请为链表二输入n个数据:\n");
Creat_list(L2,n);
Print_list(L1);
Print_list(L2);
printf("\n兩鏈表的并集為:\n");
Mergelist(L1,L2,L3);
Print_list(L3);
system("pause");
printf("\n两链表的交集为:\n");
merglist(L1,L2,L5);
Print_list(L5);
printf("\n將合并的鏈表倒置:\n");
Creat_list_l(L3,L4);
Print_list(L4);
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -