栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

双端队列的链表表示详解(含逻辑与代码)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

双端队列的链表表示详解(含逻辑与代码)

逻辑梳理 一、队列逻辑

使用双向链表

创建中间结点,一个左指针,一个右指针

 

左插右删

 先进先出为队列,添加结点时采用尾插法

 

 为了对应队列的逻辑结构,删除结点时直接改变中间结点的next指针和第二个结点的pre指针即可

 

 

右插左删

  先进先出为队列,添加结点时依然采用尾插法,保持逻辑的一致

 

 同理,为了对应队列的逻辑结构,删除结点时直接改变中间结点的next指针和第二个结点的pre指针即可

二、栈逻辑 左插左删

 后进先出为栈,删除结点时动右指针

 右插右删

 后进先出为栈,删除结点时动左指针 

代码 
#include
#include
//肯定是双向链表
//数据集合
typedef struct LinkQueue {
	int element;//当前结点的真实数据
	struct LinkQueue* pre;
	struct LinkQueue* next;
	int size;//双端队列的数目
}Node;


Node* middle;//中间节点的指针 类似头的作用
Node* left;//左指针
Node* right;//右指针


//操作集合
void InitQueue()
{
	middle = (Node*)malloc(sizeof(Node));
	middle->next = NULL;
	middle->pre = NULL;
	left = right = middle;
	middle->size = 0;
	
}

void left_push(int key)
{
	Node* new_node = (Node*)malloc(sizeof(Node));
	new_node->element = key;
	right->next = new_node;
	new_node -> pre = right;
	new_node->next = NULL;
	//移动右指针
	right = right->next;
	middle->size++;

}

void left_pop() {
	if (middle->size != 0)
	{
		if (right == middle)
		{
			Node* temp = right->pre;
			right->pre = right->pre->pre;
			right->pre->next = right;
			free(temp);
			middle->size--;
		}
		else 
		{
			Node* temp = right;
			right = right->pre;
			right->next = NULL;
			free(temp);
			middle->size--;
		}
	}
	else
	{
		//没有元素啦
	}
}


void right_push(int key)
{
	Node* new_node = (Node*)malloc(sizeof(Node));
	new_node->element = key;
	left->pre = new_node;
	new_node->next = left;
	new_node->pre = NULL;
	//移动右指针
	left = left->pre;
	middle->size++;

}

void right_pop() {
	if (middle->size != 0)
	{
		if (left == middle)
		{
			Node* temp = left->next;
			left->next = left->next->next;
			left->next->pre = left;
			free(temp);
			middle->size--;
		}
		else
		{
			Node* temp = left;
			left = left->next;
			left->pre = NULL;
			free(temp);
			middle->size--;
		}
	}
	else
	{
		//没有元素啦
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号