栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

3.数据结构C语言-循环单链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

3.数据结构C语言-循环单链表

3.1主要涉及循环单链表的初始化、尾插建表和合并带头指针的循环单链表操作,代码实现如下:

#include 

typedef char ElemType;
typedef struct CircullinkList {
	ElemType data;
	struct CircullinkList* next;
}Node, * ClinkList;

void InitList(ClinkList* CL);             
void PrintList(ClinkList CL);              
void CreateClinkList(ClinkList CL);      
ClinkList Merge_1(ClinkList CL1, ClinkList CL2);               
//ClinkList Merge_2(ClinkList CL1, ClinkList CL2);                


void InitList(ClinkList* CL)                      
{
	*CL = (ClinkList)malloc(sizeof(Node));
	(*CL)->next = *CL;                          
}

void PrintList(ClinkList CL)               
{
	Node* cur = CL->next;
	while (cur != CL)
	{
		printf("%c ", cur->data);
		cur = cur->next;
	}
	printf("n");
}

void CreateClinkList(ClinkList CL)       
{
	Node* rear = CL;                         
	Node* s;                                    
	char c;
	int flag = 1;
	while (flag)
	{
		c = getchar();
		if (c != '$')
		{
			s = (Node*)malloc(sizeof(Node));     
			s->data = c;                         
			rear->next = s;                      
			s->next = CL;                        
			rear = rear->next;                   
		}
		else
		{
			flag = 0;
		}
	}
	rewind(stdin);                     
}

ClinkList Merge_1(ClinkList CL1, ClinkList CL2)               
{
	Node* rear1 = CL1->next;
	Node* rear2 = CL2->next;
	while (rear1->next != CL1)          
	{
		rear1 = rear1->next;
	}
	while (rear2->next != CL2)          
	{
		rear2 = rear2->next;
	}
	rear1->next = CL2->next;           
	rear2->next = CL1;                   
	free(CL2);                         
	return CL1;                         
}

//ClinkList Merge_2(ClinkList CL1, ClinkList CL2)               
//{
//	Node* h;
//	h = CL1->next;                             
//	CL1->next = CL2->next->next;                
//	free(CL2->next);                           
//	CL2->next = h;                             
//	            
//	return CL2;                              
//}                   


void TestClinkList()
{
	
	ClinkList CL1;
	ClinkList CL2;
	InitList(&CL1);
	InitList(&CL2);
	CreateClinkList(CL1);
	CreateClinkList(CL2);
	PrintList(Merge_1(CL1, CL2));

}
int main()
{
	TestClinkList();
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号