⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpp1.cpp

📁 自己做的数据结构实验题(合并链表
💻 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 + -