数据结构(队列Queue)

一、队列

1、队列的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、队列的顺序实现

在这里插入图片描述

在这里插入图片描述

2.1、初始化

在这里插入图片描述

//初始化
void InitQueue(SqQueue &Q){
   
	Q.front=Q.rear=0;
} 
//判断是否为空
bool QueueEmpty(SqQueue Q){
   
	if(Q.front==Q.rear)
		return false;
	else 
		return true; 
} 

2.2、入队

在这里插入图片描述

队列已经满了的判断条件
队列已满的条件:rear==MaxSize ???
在这里插入图片描述

bool EnQueue(SqQueue &Q,int x){
   
	//判断队列是否已满
	if((Q.rear+1)%MaxSize==Q.front)
		return false;
	Q.data[Q.rear]=x;
	Q.rear=(Q.rear+1)%MaxSize;
	return true;
}

形成循环队列

2.3、出队

在这里插入图片描述

bool BeQueue(SqQueue &Q,int &x){
   
	if(Q.front==Q.rear)
		return false;
	x=Q.data[Q.front];
	Q.front=(Q.front+1)%MaxSize;
	return true;
} 

2.4、查找

bool GerHead(SqQueue Q,int &x){
   
	if(Q.front==Q.rear)
		return false;
	x=Q.data[Q.front];
	return true;
} 

队列中的元素个数
(rear+MaxSize-front)%MaxSize
在这里插入图片描述

2.5、判断队列 满/空

定义一个size,满是size=MaxSize,空是size=0
请添加图片描述
定义一个tag,删除操作tag=0,插入操作tag=1,判断,

队满:front==rear&&tag==1,队空:front==rear&&tag==0

请添加图片描述
两种对尾指向的方式
在这里插入图片描述
牺牲一个空间,判断对满,还是队空
在这里插入图片描述
在这里插入图片描述

3、队列的链式实现

在这里插入图片描述

在这里插入图片描述

3.1、初始化

在这里插入图片描述

void InitQueue(LinkQueue &Q){
   
	Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
	Q.front=NULL;
} 

3.2、入队

在这里插入图片描述

void EnQueue(LinkQueue &Q,int x){
   
	LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
	s->data=x;
	s->next=NULL;
	Q.rear->next=s;
	Q.rear=s; 
}

在这里插入图片描述

3.3、出队

在这里插入图片描述
在这里插入图片描述

4、双端队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关推荐

  1. C++数据结构——队列queue

    2024-01-30 20:30:01       9 阅读
  2. 【Golang】实现简单队列(Queue)数据结构

    2024-01-30 20:30:01       34 阅读

最近更新

  1. TCP协议是安全的吗?

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

    2024-01-30 20:30:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

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

    2024-01-30 20:30:01       20 阅读

热门阅读

  1. 剑指offer面试题13 在O(1)时间删除链表结点

    2024-01-30 20:30:01       38 阅读
  2. 最少硬币问题

    2024-01-30 20:30:01       32 阅读
  3. 张毅超值得宣传

    2024-01-30 20:30:01       31 阅读
  4. Spring Cache简明教程

    2024-01-30 20:30:01       43 阅读
  5. isinstance(1, type) 为什么会输出false呢

    2024-01-30 20:30:01       29 阅读
  6. 面试经典150题(96-100)

    2024-01-30 20:30:01       32 阅读
  7. 蓝桥杯 算法提高 字符串匹配(C++)暴力破解+KMP

    2024-01-30 20:30:01       37 阅读