数据结构学习(四)——循环单链表的操作之合并

本文介绍了循环链表的概念,并重点讲解了如何进行循环单链表的插入与删除操作。特别是对于两个循环单链表的合并,通过找到每个链表的尾结点,实现高效合并。
摘要由CSDN通过智能技术生成

所谓循环链表就是尾结点与头结点相连的链表,整个链表形成一个环。而对于循环链表的插入与删除运算,基本上与单链表相同,只是在判断链表是否结束有所不同。下面的代码操作实现了两个循环单链表的合并。且核心代码不多,主要是分别找到循环单链表的尾结点再进行后续操作。

#include <stdio.h>
#include <stdlib.h>

typedef struct list
{
	char data;
	struct list *next;
}linklist;

linklist *CreateLinklist_End(int *l);		//尾插法创建单循环链表
linklist *Linklist_Connect(linklist *h1,int l1, linklist *h2, int l2);	//单循环链表的合并
void ShowLinklist(linklist *h);		//输出显示链表

int main(void)
{
	linklist *head1, *head2;	
	int length1, length2;		//分别记录两个循环链表的长度

	printf("循环单链表的操作练习:\n");
	printf("创建两个单循环链表:\n");
	printf("第一个链表数据输入(请依次输入字符数据,'#'号结束):\n");
	head1 = CreateLinklist_End(&length1);
	getchar();					//消除回车键为后面输入带来的影响
	printf("第二个链表数据输入(请依次输入字符数据,‘#’号结束):\n");
	head2 = CreateLinklist_End(&length2);
	printf("第一个链表的数据依次为:\n");
	ShowLinklist(head1);
	printf("其节点数目为:%d\n", length1);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值