数据结构(四)队列

队列

1. 什么是队列

队列(Queue):具有一定操作约束的线性表

  • 插入和删除操作:只能在一端(front)插入,而在另一端(rear)删除
  • 数据插入:入队列(AddQ)
  • 数据删除:出队列(DeleteQ)
  • 先进先出:FIFO

2. 队列的抽象数据类型描述

  • 类型名称:队列(Queue)

  • 数据对象集:一个有 0 个或多个元素的有穷线性表

  • 操作集:长度为 MaxSize 的队列 Q∈Queue,队列元素 item∈ElementType

    队列的基本操作主要有:

    • Queue CreateQueue(int MaxSize):生成长度为 MaxSize 的空队列
    • int IsFull(Queue Q):判断队列 Q 是已满
    • void AddQ(Queue Q,ElementType item):将数据元素 item 插入队列 Q 中
    • int IsEmpty(Queue Q):判断队列 Q 是否为空
    • ElementType DeleteQ(Queue Q):将队头数据元素从队列中删除并返回
1. 循环队列的顺序存储实现

​ 队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量 front 以及一个记录队列尾元素位置的变量 rear 组成,其中 front 指向整个队列的头一个元素的再前一个,rear 指向的是整个队列的最后一个元素,从 rear 入队,从 front 出队,且仅使用 n-1 个数组空间

#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef int ElementType;
typedef struct QNode *Queue;
struct QNode{
   
	ElementType Data[MaxSize];
	int front;   // 记录队头 
	int rear;    // 记录队尾 
};

Queue CreateQueue();  // 初始化队列 
void AddQ(Queue Q,ElementType item);  //  入队
int IsFull(Queue Q); // 判断队列是否已满 
ElementType DeleteQ(Queue Q);  // 出队 
int IsEmpty(Queue Q); // 判断队列是否为空 

// 初始化 
Queue CreateQueue(){
   
	Queue Q;
	Q = (Queue)malloc(sizeof(struct QNode));
	Q->front = -1;
	Q->rear = -1;
	return Q;
} 

// 判断队列是否已满
int IsFull
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值