队列的基本操作 数据结构

     队列(queue)也是线性表的一种特殊情况,其所有的插入均限定在表的一端进行,而所有的删除则限定在表的另一端进行。允许插入的一端称队尾(rear),允许删除的一端称队头(front)。队列的结构特点是先进队的元素先出队,因此,通常又把队列叫做先进先出表.
  
    队列的基本操作:
(1)  InitQueue(&Q): 初始化操作,设定一个空队列。
(2)  QueueEmpty(Q): 判空操作,若Q为队列,则返回值“true”,否则返回值“false”。
(3)  EnQueue(&Q, e): 入队操作,在队列Q的队尾插入一个元素e。
(4)  DeQueue(&Q, &e): 出队操作,若队列Q不空,在队头删除一个元素。
(5)  GetHead(Q, &e): 取队头元素操作,若队列Q不空则取队头元素的值。
(6)  ClearQueue(&Q): 置队空操作,不论队列是否为空,操作结果都是将Q置为空队列。
(7)  QueueLength(Q): 求当前队列中元素的个数。
(8)  DestroyQueue(&Q): 销毁Q队列。

     
 (1)初始化操作
void InitQueue(SqQueue &Q){
//构造一个空队列
Q.base = (QElemType *)malloc(MAXSIZE * sizeof(QElemType));
if ( ! Q.base) exit(0);
Q.front = Q.rear = 0;
}//InitQueue
(2)求队列的长度
int QueueLength(SqQueue Q){
//求队列的长度
return (Q.rear – Q.front + MAXQSIZE) % MAXQSIZE;
}

   
 
3 )入队列操作
void EnQueue(SqQueue &Q, QElemType e){
//插入元素e为Q的新的队尾元素
if ((Q.rear+1)%MAXQSIZE == Q.front) 
exit(0);
Q.base[Q.rear] = e;
Q.rear = (Q.rear+1) % MAXQSIZE;
}
4 )判空操作
int QueueEmpty(SqQueue Q){
//判断队列是否是空队列
if (Q.rear == Q.front ) return 1;}
  
 (5)出队列操作
void DeQueue(SqQueue &Q, QElemType &e){
// 删除Q的队头元素, 并用e返回其值
if(Q.front == Q.rear) return 0;
e = Q.base[Q.front];
Q.front = (Q.front+1) % MAXQSIZE;

(6)取队头元素
void GetHead(SqQueue Q, QElemType &e){
// 取Q的队头元素, 并用e返回其值
if(Q.front == Q.rear) return 0;
e = Q.base[Q.front];

 

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值