合并单向循环链表

合并单向循环链表

题目

已知非空链表(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值