数据结构笔记chapter03_2_队列

3.2.1 队列的基本概念

回顾:数据结构三要素:逻辑结构、存储结构、数据运算

线性表:具有相同数据类型的 n 个数据元素的有限序列,其中 n 为表长

栈(Stack):只允许在一端进行插入或者删除操作的线性表

队列(Queue):只允许在一端进行插入,另一端删除的线性表

特点:先入先出(FIFO)

重要术语:队头、队尾、空队列

  1. 队头:允许删除的一端
  2. 队尾:允许插入的一端

(尾插头删)

 


3.2.2 队列的顺序实现

基本操作:创、增、删、查(队头元素)、判空判满(增删查前必要判断)

1、创

静态数组存放队列元素

队头、队尾两个指针

  • 队头指针:指向队头元素
  • 队尾指针:指向队尾元素的后一个位置(下一个应该插入的位置)

//队列的顺序实现

#define MaxSize 10
typedef struct{
    
    ElemType data[MaxSize];  //静态数组存放队列元素
    int front,rear;    //队头和队尾指针
}SqQueue;

2、初始化

初始时队头、队尾指针指向0

//初始化队列

void InitQueue(SqQueue &Q){
    
    //初始时队头、队尾指针指向0
    Q.rear=Q.front=0;
}

3、判空判满

  • 判空

bool QueueEmpty(SqQueue Q)

//判空操作

bool QueueEmpty(SqQueue Q)  //判断不变化,则不需要传址
{
    if(Q.rear==Q.front)   //队空条件
      return true;
    else
      return false;
}

  • 判满

循环队列:用模运算将存储空间在逻辑上变成了环状


Q.data[Q.rear]=x;   //新元素插入队尾

Q.rear=(Q.rear+1)%Ma
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值