数据结构代码题Day23-26

day23
两个循环链表h1和h2,编写一个函数将h2加入到h1之后,保持链表循环的形式

两个链表合起来 变成一个单链表
算法思想:找到h1的表尾p,h2的表尾q
将p指向h2 q指向h1 组成一条循环单链表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Linklist conn_link(Linklist&h1,Linklist&h2){
   
	LNode*p=h1;
	LNode*q=h2;
	//调整到表尾
	while(p!=h1){
   //作为链表尾部的判断
		p=p->next;
}
	while(q!=h2){
   //作为链表尾部的判断
		q=q->next;
}
p->next=h2->next;
//由于h2为头结点,在进行循环链表合并时,该节点不存储数据,因此为保证连续性,将h1链表的尾部的next指向h2的第一个数据节点。
free(h2);//该步骤可释放也可不释放,理解算法思想即可
q->next=h1;//进行尾部首部链接,保证为一个循环链表
return h1;//返回循环链表
}

day24
设有一个带头节点的循环单链表,其结点值均为正整数,设计一个算法,反复找出单链表中结点值最小的结点,并输出,然后将该点从单链表中删除,直到单链表为空为止,在删除表头结点

算法思想:1、针对以上的的题意进行分析,得到一般解题过程为:

先查找符合要求的最小值结点
进行删除
注意!!!!!!以上两个步骤只是建立在一趟单链表的遍历下删除了一个最小值结点
题目要求的是反复找出单链表中节点值最小的结点,并输出,然后将其删除,需要再设置一个循环进行遍历。
在单链表中删除最小值结点可参考day9
在这里贴出

//因为要操作链表所以必要加&符号
//结构体
typedef struct LNode{
   
	int data;
	struct LNode *  next;
};

ListLink Delete_min(ListList &L){
   
	//初始化节点
	LNode * pre = L;//p的前驱
	LNode * p = pre->next;//指向头节点的下一个节点 遍历
	LNode * minp 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值