华清远见作业第十六天

思维导图:

双向循环链表头插入:

代码:

cpp 复制代码
Doublelist insert_head(Doublelist head,datatype element)
{
	//创建新节点s
	Doublelist s=create_node();
	if(NULL==s)
	{
		return head;
	}
	s->data=element;//数据存储
	//判断链表是否为空
	if(NULL==head)
	{
		head=s;
		return head;
	}
	else
	{	
		Doublelist rear=head->priv;
		//开始插入
		s->next=head;//把原来的头放到s的后面
		head->priv=s;//原来的head前指针指向s
		head=s;//s成为新的头
		//形成两个环
		head->priv=rear;
		rear->next=head;
		return head;
		
	}
	
}

画图:

运行效果:

双向循环链表尾插入:

代码:

cpp 复制代码
//尾插
Doublelist insert_rear(Doublelist head,datatype element)
{
	//创建新节点s
	Doublelist s=create_node();
	if(NULL==s)
	{
		return head;
	}
	s->data=element;//数据存储
	//判断链表是否为空
	if(NULL==head)
	{
		head=s;
		return head;
	}
	else
	{	
		Doublelist p=head;		
		//找最后一个节点
		while(p->next!=head)
		{
			p=p->next;
		}
		//开始插入
		p->next=s;//把数据存放s放到的最后一位的后面
		s->priv=p;//s的前一个是原来的最后一个成为新的最后一个s
		s->next=head;
		head->priv=s;
		return head;
		
	}
	
}

画图:

运行效果:

双向循环链表头删除

代码:

cpp 复制代码
//头删除
Doublelist del_head(Doublelist head)
{
	if(NULL==head)
	{
		return head;
	}
	 if(head->next==head)
	{
		free(head);
		head=NULL;
		return head;
	}
	else
	{
		
		Doublelist rear=head->priv;//定位到最后一个节点,并存储
		Doublelist del=head;//要删除的头标志到del
		head=head->next;//头节点变成原来的下一个

		free(del);//释放del
		del=NULL;//防止del
		//形成环
		rear->next=head;
		head->priv=rear;
		

		return head;
		
	
	}

}

画图:

运行效果:

双向循环链表尾删除

代码:

cpp 复制代码
//尾巴删除
Doublelist del_rear(Doublelist head)
{
	if(NULL==head)
	{
		return head;
	}
	else if(head->next==NULL)
	{
		free(head);
		head=NULL;
		return head;
	}
	else
	{
		Doublelist p=head;		
		//找倒数第二个节点
		while(p->next->next!=head)
		{
			p=p->next;
		}
		//标记倒数第一个
		Doublelist del=p->next;
		free(del);//释放最后一个
		del=NULL;//防止野指针
		p->next=head;//新的最后一个指向空
		head->priv=p;
		return head;
			
	}
}

画图:

运行效果:

相关推荐
Fanxt_Ja3 天前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
今后1233 天前
【数据结构】二叉树的概念
数据结构·二叉树
小莞尔3 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329293 天前
Day03_刷题niuke20250915
c语言
第七序章3 天前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
l1t3 天前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
l1t3 天前
利用美团龙猫用libxml2编写XML转CSV文件C程序
xml·c语言·libxml2·解析器
散1123 天前
01数据结构-01背包问题
数据结构
消失的旧时光-19433 天前
Kotlinx.serialization 使用讲解
android·数据结构·android jetpack