【无标题】

 

 

linklist create_node()
{
	linklist s=(linklist)malloc(sizeof(struct Node));
	if(s==NULL)
		return s;
	s->data=0;
	s->next=NULL;
	s->prev=NULL;
	return s;
}
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;
}

 

栈:在一段(栈尾)实现插入和删除,先进后出;

队列:在两端(队头、队尾)实现插入(队尾)和删除(队头),先进先出;

 由于程序的运行导致指针的位置变化,在释放地址时,指针未指向首地址,导致部分地址没有得到正确释放且丢失寻找能力。

相关推荐

  1. 标题

    2024-02-07 20:40:01       41 阅读
  2. 标题

    2024-02-07 20:40:01       43 阅读
  3. 标题

    2024-02-07 20:40:01       40 阅读
  4. 标题

    2024-02-07 20:40:01       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-07 20:40:01       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-07 20:40:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-07 20:40:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-07 20:40:01       18 阅读

热门阅读

  1. Unity类银河恶魔城学习记录4-3 P56 On Hix FX源代码

    2024-02-07 20:40:01       29 阅读
  2. 【C++ 二维前缀和】约会

    2024-02-07 20:40:01       26 阅读
  3. svn常用命令及过滤文件 global ignore pattern

    2024-02-07 20:40:01       30 阅读
  4. 随机森林分类器原理简述

    2024-02-07 20:40:01       31 阅读
  5. 【Android】手机端使用NanoHTTPD搭建服务器

    2024-02-07 20:40:01       28 阅读
  6. 力扣:78. 子集

    2024-02-07 20:40:01       31 阅读
  7. 2024年-视觉AI检测的面试题目总结

    2024-02-07 20:40:01       29 阅读
  8. SouthLeetCode-打卡24年02月第1周

    2024-02-07 20:40:01       27 阅读
  9. CDN的深入理解+搭建自己的CDN

    2024-02-07 20:40:01       35 阅读
  10. IDEA2023SpingBoot只能勾选17和21

    2024-02-07 20:40:01       35 阅读