队列

本文介绍了队列的概念,队列是一种先进先出的数据结构,包括队列的顺序存储结构和链式存储结构,以及相应的基本运算如初始化、进队、出队等的实现。讨论了顺序队列在满和空的条件,以及环形队列解决假溢出问题的方法。此外,还阐述了链队的结构及操作,包括链队的初始化、销毁、判断队列是否为空、入队和出队等操作的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 队列的定义 

 队列简称队,它也是一种运算受限的线性表,其限制仅允许在表的一端进行插入,而在表的另一端进行删除。
把进行插入的一端称做队尾(rear),进行删除的一端称做队首或队头(front)

向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为出队或离队,元素出队后,其后继元素就成为队首元素。 

由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序出队,所以又把队列称为先进先出表

队列的基本运算如下:

InitQueue(&q):初始化队列。构造一个空队列q。
DestroyQueue(&q):销毁队列。释放队列q占用的存储空间。
QueueEmpty(q):判断队列是否为空。若队列q为空,则返回真;否则返回假。
enQueue(&q,e):进队列。将元素e进队作为队尾元素。

deQueue(&q,&e):出队列。从队列q中出队一个元素,并将其值赋给e。

二、队列的顺序存储结构及其基本运算的实现

  假设队列的元素个数最大不超过整数MaxSize,所有的元素都具有同一数据类型ElemType,则顺序队列类型SqQueue定义如下:
  typedef struct 
   {   ElemType data[MaxSize]; 
        int front,rear;//队首和队尾指针

   } SqQueue;

1)顺序队的四要素(初始时front=rear=-1)

队空条件:front=rear
队满条件:rear=MaxSize-1
元素e进队:rear++;data[rear]=e;

元素e出队:front++;e=data[front];

2) 顺序队中实现队列的基本运算

(1)初始化队列InitQueue(q)

  构造一个空队列q。将front和rear指针均设置成初始状态即-1值。

void InitQueue(SqQueue *&q)
{ q=(SqQueue *)malloc (sizeof(SqQueue));
  q->front=q->rear=-1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值