【寒假作业】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.堆区释放内存时,指针未指向释放内存首地址

相关推荐
龙哥说跨境11 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
科技探秘人11 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人12 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR17 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香19 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员20 分钟前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU21 分钟前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
q24985969322 分钟前
前端预览word、excel、ppt
前端·word·excel
stewie624 分钟前
在IDEA中使用Git
java·git
小华同学ai27 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书