合并单向循环链表

本文介绍了一种算法,用于将单向循环链表改造为(a1,a2,a3,a4,...,an-1,an,an-1,...,a4,a3,a2,a1)的形式。通过设置尾指针rear,该算法只遍历一次链表,依次复制节点并插入到尾部,最后将rear指向新链表的正确位置,形成对称的循环链表。提供了一个示例和代码实现来说明这一过程。" 126798355,8496707,Java中使用JsonPath进行数据提取,"['java', 'json', '开发语言']
摘要由CSDN通过智能技术生成

合并单向循环链表

题目

已知非空链表(a1,a2,a3,a4,a5,…,an)仅采用设置尾指针的单向链表作为存储结构(设尾指针为rear),请写一算法,将线性表改造为(a1,a2,a3,a4,…,an-1,an,an-1,…,a4,a3,a2,a1).
要求:改造后的线性表次奥用仅设置尾指针rear的单向链表,并且算法中只有一个循环列表。

分析

思路,结果是关于an对称的线性表。
第一步:设指针q从rear->link开始依次遍历链表,
第二步:并且记录链表的第一个结点,假如由指针r指向。
第三步:拷贝q所指的结点信息,假设有p所指。
第四步: 将p插入到尾指针rear所指的后面。
第五步:循环第三步,第四步。
第六步:将rear指向r所指的位置,形成循环。

示例

初始时:(a1,a2,a3,a4,a5,…,an)
改变后:(a1,a2,a3,a4,…,an-1,an,an-1,…,a4,a3,a2,a1)

代码

// 合并单向循环链表
LinkList MERGELIST(LinkList rear){    
	LinkList p,q,r,s;    
	q=rear->link;    
	p=(LinkList)malloc(sizeof(BNode));    
	p->data = q->d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值