【寒假作业】day2.4

1.

复制代码
int length(linklist head)
{
	int len=0;
	linklist p=head;
	while(p)
	{
		p=p->next;
		len++;
	}
	return len;
	
}
void output(linklist head)
{
	if(head==NULL)
	{
		puts("EMPTY");
		return;
	}
	linklist p=head;
	while(p)
	{
		printf("%-5d",p->data);
		p=p->next;
	}
	puts("");
}
linklist insert_head(linklist head,datatype element)
{
	linklist s=create_node();
	s->data=element;
	if(head==NULL)
		head=s;
	else
	{
		s->next=head;
		s->prev=NULL;
		head=s;
	}
	return head; 
}
linklist insert_rear(linklist head,datatype element)
{
	linklist s=create_node();
	s->data=element;
	if(head==NULL)
		head=s;
	else
	{
		linklist p=head;
		while(p->next)
		{
			p=p->next;
		}
		p->next=s;
		s->next=NULL;
		s->prev=p;
	}
	return head;
}
linklist del_head(linklist head)
{
	if(head==NULL)
		return head;
	else if(head->next==NULL)
	{
		linklist del=head;
		head=head->next;
		head->prev=NULL;
		free(del);
		del=NULL;
		return head;
	}
}
linklist del_rear(linklist head)
{
	if(head==NULL)
	return head;
	else if(head->next==NULL)
	{
		free(head);
		head=NULL;
		return head;
	}
	else
	{
		linklist del=head;
		while(del->next)
		{
		del=del->next;
		}
		del->prev->next=NULL;
		free(del);
		del=NULL;
		return head;
    }
}
复制代码
linklist insert_pos(linklist head,int pos,datatype element)
{
	linklist s=create_node();
	s->data=element;
	if(head==NULL || pos==1)
		head=insert_head(head,element);
	    return head;
	if(pos<1 || pos>length(head)+1)
	{
		puts("ERROR");
		return head;
	}
	else
	{
		linklist p=head;
		for(int i=1;i<pos-1;i++)
		{
			p=p->next;
		}
		s->next=p->next;
		s->prev=p;
		p->next->prev=s;
		p->next=s;
		return head;
	}
}
linklist del_pos(linklist head,int pos)
{
	if(head==NULL)
		return head;
	if(pos<1 || pos>length(head)+1)
	{
		puts("ERROR");
		return head;
	}
	else
	{
		if(pos==1)
		{
			head=del_head(head);
			return head;
		}
		else if(pos==length(head))
		{
			head=del_rear(head);
			return head;
		}
		else
		{
			linklist p=head;
			for(int i=1;i<pos;i++)
			{
				p=p->next;
			}
			p->prev->next=p->next;
			p->next->prev=p->prev;
			free(p);
			p=NULL;
			return head;
		}
	}
}
linklist change_pos(linklist head,int pos,datatype element)
{
 
	if(pos<1 || pos>length(head)+1)
	{
		puts("ERROR");
		return head;
	}
	linklist p=head;
	for(int i=1;i<pos;i++)
	{
		p=p->next;
	}
	p->data=element;
	return head;
 
 
}
void find_pos(linklist head,int pos)
{
	if(pos<1 || pos>length(head)+1)
	{
		puts("ERROR");
		return;
	}	
	linklist p=head;
	for(int i=1;i<pos;i++)
	{
		p=p->next;
	}
	printf("%d\n",p->data);
	return;
}

3.栈是先进后出的思想,队列是先进先出的思想

4.堆区释放内存时,指针未指向释放内存首地址

相关推荐
菜鸟起航ing7 分钟前
【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与性能优化详解 - 3-5年Java开发必备知识
java·spring cloud·微服务·面试·分布式事务
laimaxgg8 分钟前
Docker命令
linux·运维·服务器·ubuntu·docker
Java手札11 分钟前
为什么选择Redis?解析核心使用场景与性能优化技巧
java·spring boot·redis·intellij-idea
杨超越luckly16 分钟前
HTML应用指南:利用GET请求获取全国汉堡王门店位置信息
大数据·前端·信息可视化·数据分析·html
HEX9CF35 分钟前
【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书
服务器·nginx·docker
龙大大L1 小时前
第五章:5.1 ESP32物联网应用 - MQTT协议深度教程
java·单片机·struts·apache
CCChaya-软件技术教师1 小时前
24-栅格布局详解(CSS3)
前端·css·css3
BillKu1 小时前
el-input 中 select 方法使用报错:属性“select”在类型“HTMLElement”上不存在
前端·javascript·vue.js·elementui
涵信1 小时前
第一节:React 基础篇-React虚拟DOM原理及Diff算法优化策略
前端·javascript·react.js
极客先躯2 小时前
高级java每日一道面试题-2025年4月01日-微服务篇[Nacos篇]-Nacos集群的数据一致性是如何保证的?
java·开发语言·微服务