6队列的入队和出队操作1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)判定队列q是否为空QueueEmpty(q)
int QueueEmpty(CirQueue q) {
return(q.front ==q.rear ); }
3.2.顺序队列的基本运算-2
(3) 求队列q的长度QueueLength(q)
int QueueLength(CirQueue q) {
return ((q.rear +MaxSize-q.front )%MaxSize); }
front
rear
Baidu Nhomakorabea
c
4 3
201
a
b
front=0 Rear=3
front
d
c
4 3
201
a
b
rear
front=3
Rear=2
3.2.顺序队列的基本运算-3
( 4 ) 获 取 队 列 q 队 首 元 素 的 值 GetHead(q)
第三章 栈和队列
——队列的入队和出队操作
• 生活中的栈与队列
• 栈和队列是特殊的线性表 •栈与队列的特征
• LIFO(Last In First Out) • FIFO(First In First Out)
3.2.顺序队列的基本运算-1
(1)初始化队列 InitQueue() CirQueue InitQueue() { CirQueue q; q.front =q.rear =0; return(q); }
d
4 3
201
a
b
rear
front=4 Rear=2
3.2.顺序队列的基本运算-4
(5) AddQueue (q, e) 将元素e入队
void AddQueue(CirQueue *q,ElementType e) {
if(q->front ==(q->rear +1)%MaxSize) printf("\nfull");
else {
q->rear =(q->rear +1)%MaxSize; q->elem [q->rear]=e;
} }
3.2.顺序队列的基本运算-5
(6) DeleteQueue (q) 删除队首元素
ElementType DeleteQueue(CirQueue *q) {
ElementType e; if(q->front ==q->rear )
ElementType GetHead(CirQueue q) {
if(QueueEmpty(q)) return(-1);
return(q.elem[(q.front+1)%MaxSize]); }
front rear
front front
4 3
201
rear
c
4 3
201
a
b
front=0 Rear=3
return(-1); else {
e=q->elem [(q->front +1)%MaxSize];
return(e); } }
相关文档
最新文档