2024.2.4

news2024/11/28 22:34:05

双向链表的头插 头删 尾插 尾删

//头插插入
Doublelink insert_head(Doublelink head,datatype element)
{
	Doublelink s=creat_Node();
	s->data=element;
	//判断是否有空链表
	if(NULL==head)
	{
		head=s;
	}
	else
	{
		s->next=head;
		head->prior=s;
		head=s;
	}
	return head;
}
//头删
Doublelink del_head(Doublelink head)
{
	if(NULL==head)
	{
		return head;
	}
	else
	{
	Doublelink del=head;
	head=head->next;
	head->prior=NULL;
	free(del);
	del=NULL;
	}
    return head;
}

//尾插
Doublelink insert_rear(Doublelink head,datatype element)
{
	Doublelink s=creat_Node();
	s->data=element;
	if(NULL==head)
	{	head=s;}
	else
	{
		Doublelink p=head;
	while(p->next)
	{
		p=p->next;
	}//找到最后一个结点
	p->next=s;
	s->prior=p;
	}
	return head;
}
//尾删
Doublelink del_rear(Doublelink head)
{
	if(NULL==head)
		return head;
	if(head->next==NULL)
	{
		free(head);
		head=NULL;
		return head;
	}
	else
	{
	//找到最后一个结点
	Doublelink del=head;
	while(del->next)
	{
      del=del->next;

	}
	del->prior->next=NULL;
	free(del);
	del=NULL;
	}
return head;
}

 

按任意元素插入,删除,修改,查找

//双链表任意位置插入
Doublelink insert_element(Doublelink head,int index,datatype key)\
{
	//创建一个结点
	Doublelink s=creat_Node();
	s->data=key;
	//首先找到所插入的位置
	int count=1;
	Doublelink p=head;
	if(index==1||head==NULL)//在为空和第一个位置插入
    return head=insert_head(head,key);
	//如果只有一个元素的情况下
	if(head->next==NULL)
    return	head=insert_rear(head,key);
	while(p)//在第二个以及往后的位置插入
	{
		count++;
		p=p->next;
	if(count==index)
	{
		s->next=p;
		p->prior->next=s;
		s->prior=p->prior;
		p->prior=s;
	}
	}
	return head;
}
//双链表按任意位置删除
Doublelink del_key(Doublelink head,int index)
{
	if(NULL==head)
	{
		return head;
	}
    else if(head->next==NULL)
	{
			free(head);
			head=NULL;
			return head;
	}
	else{
		Doublelink p=head;
	int 	count=1;
 	while(p)
		{
			count++;
  			p=p->next;//p位于要删除的元素
			if(p->next==NULL)//删除最后一个元素
			{
		return head=del_rear(head);
			}
			if(count==index)//找到要删除的元素的位置(2-n-1)
		{
			p->prior->next=p->next;
			p->next->prior=p->prior;
			free(p);
			p=NULL;
		}
		}
	return head;
}
}

 

 

Doublelink update(Doublelink head,int index,datatype element)
{
	Doublelink p=head;
       for(int i=1;i<index;i++)
	   {
		   p=p->next;
	   }
    p->data=element;
	return head;
}
int find(Doublelink head,datatype key)
{
	Doublelink p=head;
	int flag=0;
	while(p)
	{
		flag++;
		if(p->data==key)
		{
			break;
		}
		p=p->next;
	}
	return flag;
}
			
	



 

栈和队列的区别:栈是先进后出,可以在一端进行操作,逻辑连续物理不一定连续,队列是先进先出,在两端操作,内存连续

内存泄漏:在释放的时候,指针没有指向首地址而是指向了中间的某一块地址 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1432555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql相关子查询

1.什么是相关子查询 相关子查询是一个嵌套在外部查询中的查询&#xff0c;它使用了外部查询的某些值。每当外部查询处理一行数据时&#xff0c;相关子查询就会针对那行数据执行一次&#xff0c;因此它的结果可以依赖于外部查询中正在处理的行。 2.为什么要使用相关子…

微信小程序之本地生活案例的实现

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

图论练习3

内容&#xff1a;过程中视条件改变边权&#xff0c;利用树状数组区间加处理 卯酉东海道 题目链接 题目大意 个点&#xff0c;条有向边&#xff0c;每条边有颜色和费用总共有种颜色若当前颜色与要走的边颜色相同&#xff0c;则花费为若当前颜色与要走的边颜色不同&#xff0c;…

Android学习之路(27) ProGuard,混淆,R8优化

前言 使用java编写的源代码编译后生成了对于的class文件&#xff0c;但是class文件是一个非常标准的文件&#xff0c;市面上很多软件都可以对class文件进行反编译&#xff0c;为了我们app的安全性&#xff0c;就需要使用到Android代码混淆这一功能。 针对 Java 的混淆&#x…

【快速上手QT】01-QWidgetQMainWindow QT中的窗口

总所周知&#xff0c;QT是一个跨平台的C图形用户界面应用程序开发框架。它既可以开发GUI程序&#xff0c;也可用于开发非GUI程序&#xff0c;当然我们用到QT就是要做GUI的&#xff0c;所以我们快速上手QT的第一篇博文就讲QT的界面窗口。 我用的IDE是VS2019&#xff0c;使用QTc…

Leetcode高频题:213打家劫舍II

题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个…

MySQL知识点总结(三)——事务

MySQL知识点总结&#xff08;三&#xff09;——事务 事务事务的四大特性ACID原子性一致性隔离性持久性 脏读、幻读、不可重复读脏读不可重复读幻读 隔离级别读未提交读已提交可重复读串行化 事务的原理InnoDB如何实现事务的ACID事务的两阶段提交redo log与binlog的区别事务两阶…

基于SpringBoot+Vue的在线教育平台设计与实现

目录 项目介绍 技术栈 项目介绍 项目截图 搭建 代码截取 代码获取 项目介绍 近年由于疫情影响&#xff0c;线下教育行业受到较大冲击&#xff0c;因此线上教育培训有较好的发展势头&#xff0c;其中建筑行业考证培训是一个前景良好的发展方向&#xff0c;该行业不仅需要…

权威认可|亚数强势入围FreeBuf《CCSIP 2023中国网络安全产业全景图》10大细分领域

近日&#xff0c;国内安全行业门户FreeBuf旗下FreeBuf咨询正式发布《CCSIP&#xff08;China Cyber Security Industry Panorama&#xff09;2023中国网络安全行业全景册&#xff08;第六版&#xff09;》。 凭借卓越的技术产品能力、市场影响力及领先的综合实力&#xff0c;亚…

C++泛编程(3)

类模板基础 1.类模板的基本概念2.类模板的分文件编写3.类模板的嵌套 &#xff08;未完待续...&#xff09; 在往节内容中&#xff0c;我们详细介绍了函数模板&#xff0c;这节开始我们就来聊一聊类模板。C中&#xff0c;类的细节远比函数多&#xff0c;所以这个专题也会更复杂。…

【Crypto | CTF】BUUCTF 萌萌哒的八戒

天命&#xff1a;这年头连猪都有密码&#xff0c;真是奇葩&#xff0c;怪不得我一点头绪都没有 拿到软件&#xff0c;发现是.zip的压缩包&#xff0c;打不开&#xff0c;改成7z后缀名&#xff0c;打开了 发现是一张图片 也只有下面这行东西是感觉是密码了&#xff0c;又不可能…

[leetcode] 22. 括号生成

文章目录 题目描述解题方法方法一&#xff1a;dfs遍历java代码 方法二&#xff1a;按照卡特兰数的思路递归求出有效括号组合java代码 相似题目 题目描述 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示…

计算机编码:原码、反码、补码的思想、原理和实例(详细版)

​ 目录 收起 一、原码、反码、补码的意义 意义&#xff1a; 三、原码 原码的特点&#xff1a; 原码存在的问题&#xff1a; 四、反码 反码的特点&#xff1a; 存在的问题&#xff1a; 五、补码 六、补码的思想&#xff08;模&&同余数&#xff09; 模 && 同余数…

exF2FS: Transaction Support in Log-Structured Filesystem——泛读笔记

FAST 2022 Paper 分布式元数据论文汇总 问题 现代应用程序努力以崩溃一致的方式保护其数据&#xff0c;这通常分布在多个文件抽象之上。在底层文件系统缺乏事务支持的情况下&#xff0c;应用程序使用复杂的协议来确保跨多个文件的事务性更新&#xff0c;产生长序列的写操作和…

小林Coding_操作系统_读书笔记

一、硬件结构 1. CPU是如何执行的 冯诺依曼模型&#xff1a;中央处理器&#xff08;CPU&#xff09;、内存、输入设备、输出设备、总线 CPU中&#xff1a;寄存器&#xff08;程序计数器、通用暂存器、指令暂存器&#xff09;&#xff0c;控制单元&#xff08;控制CPU工作&am…

自研人工智能小工具-小蜜蜂(国外ChatGpt的平替)

国内有非常多好用的人工智能工具&#xff0c;但均无法完全替代国外ChatGpt。 ChatGPT相较于其他国内工具的优势在于以下几点&#xff1a; 创新的语言生成能力&#xff1a;ChatGPT是由OpenAI开发的先进的自然语言生成模型&#xff0c;它采用了大规模的预训练和精细调整方法。因此…

蓝桥杯刷题day06——平均

1、题目描述 有一个长度为n 的数组&#xff08;n 是 10 的倍数&#xff09;&#xff0c;每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均&#xff0c;而更改第i 个数的代价为bi&#xff0c; 他想更改若干个数的值使得这10 种数出现的次数相等&…

创建TextMeshPro字体文件

相比于Unity的Text组件&#xff0c;TextMesh Pro提供了更强大的文本格式和布局控制&#xff0c;更高级的文本渲染技术&#xff0c;更灵活的文本样式和纹理支持&#xff0c;更好的性能以及更易于使用的优点。但unity自带TextMeshPro字体不支持中文。这里使用普通字体文件生成Tex…

前端登陆加密解决方案

项目背景 环食药烟草的数据下载模块中&#xff0c;需要判断用户在进行数据下载时是进行了登录操作&#xff0c;如果没有登录要跳转登陆页面&#xff0c;输入账号和密码进行登录。 使用场景 项目中需要前端书写登录页面&#xff0c;用户输入账号密码&#xff0c;前端获取到用…

Allegro中设置让Route Keepout(禁止布线区)允许布线或打过孔的方法

Allegro中设置让Route Keepout&#xff08;禁止布线区&#xff09;允许布线或打过孔的方法 Chapter1 Allegro中设置让Route Keepout&#xff08;禁止布线区&#xff09;允许布线或打过孔的方法一、前言二、设置方法 Chapter2 Cadence Allegro PCB设计88问解析(二十三) 之 Alleg…