数据结构 线性表(循环链表)C语言实现

基于c语言实现,为了使用&引用,引入了c++头文件
在这里插入图片描述

源代码

#include <iostream>
#include <stdlib.h>
#define  ElemType float
#define  Status  int 
#define OK 1
#define ERROR 0
#define OVERFLOW 0
 
typedef struct LNode{
    
    
	ElemType data;
	struct LNode *next;
}LNode,*LinkList; 

LinkList CreateList_L(LinkList &L,int n);//创建链表 
void Printlist_L(LinkList L);//输出链表 
void Lunion(LinkList &La,LinkList &Lb);

int main(int argc, char** argv) {
    
    
	LinkList La,Lb,p,q;
	int n;
	printf("请输入循环a链表的长度:\n");
	scanf("%d",&n); 
	printf("请输入链表a的数据:\n"); 
	p=CreateList_L(La,n);
	Printlist_L(La);
	printf("请输入循环b链表的长度:\n");
	scanf("%d",&n);
	printf("请输入链表b的数据:\n");
	q=CreateList_L(Lb,n);
	Printlist_L(Lb);
	Lunion(p,q);
	printf("循环链表合并后:\n");
	Printlist_L(p);
	return 0;
}
LinkList CreateList_L(LinkList &L,int n)
{
    
    
	int i;
	LinkList p,q;
	q=L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;
	for(i=1;i<n+1;i++)
	{
    
    
		p=(LinkList)malloc(sizeof(LNode));
		scanf("%f",&p->data);
		p->next=NULL;
		q->next=p;
		q=p;	
	}
	p->next=L;	
	return p;
}

void Printlist_L(LinkList L)
{
    
    
	LinkList p;
	p=L->next;
	while(p!=NULL)
	{
    
    
		printf("%4.2f ",p->data);
		p=p->next;
		if(p==L)
			break;
	}
	printf("\n");
}

void Lunion(LinkList &La,LinkList &Lb)
{
    
    
	LinkList p;
	p=La->next;
	La->next=Lb->next->next;
	free(Lb->next);
	Lb->next=p;
	La=p;
}

运行截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44635198/article/details/112912138