华清远见作业第十六天

思维导图:

双向循环链表头插入:

代码:

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;
			
	}
}

画图:

运行效果:

相关推荐
aaaameliaaa2 小时前
字符函数和字符串函数
c语言·笔记·算法
夜月yeyue2 小时前
AUTOSAR CP 从上电到 Runnable
c语言·网络·tcp/ip·车载系统
白白白小纯4 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
小羊先生car5 小时前
RTOS-F429-HAL-绝对延时和相对延时(2026/7/31)
c语言·rtos
阿米亚波8 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
caishenzhibiao8 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
三克的油10 小时前
数据结构-4
数据结构
NoteStream11 小时前
【c语言基础】C语言常见概念
c语言·开发语言·编辑器
caishenzhibiao12 小时前
先行者副图 同花顺期货通指标
java·c语言·c#
05664612 小时前
Python康复训练——数据结构
数据结构·windows·python