1.队列的初始化
#include<stdio.h>
#define maxn 10
//队列初始化操作
typedef struct {
int data [ maxn ];
int rear, front;
} Sq_queue;
Init_queue ( Sq_queue &q ){
int front = 0;//初始状态都指向0
int rear = 0;
}
2.队列判空
bool Queue_empty ( Sq_queue q ){
if ( q.front == q.rear )
return true;
else
return false;
}
3.新元素入队操作
//新元素入队操作
bool Enter_queue ( Sq_queue &q, int x ){
if ( (q.rear + 1) % maxn == q.front )
return false;
q.data [ q.rear ] = x;
q.rear = ( q.rear + 1 ) % maxn;
return true;
}
4.出队操作
//出队操作
bool Delete_queue ( Sq_queue &q, int &x ){
if ( q.front == q.rear )
return false;
x = q.data [ q.front ];
q.front = ( q.front + 1 ) % maxn;
return true;
}
5.获取队头元素
//获取队头元素
bool Gethead ( Sq_queue q ,int &x ){
if ( q.front == q.rear )
return false;
x = q.data [ q.front ];
return true;
}
6.判断队列空\满的三种方案
- 结构体中增加一个变量记录队列元素个数
#include<stdio.h>
#define maxn 10
typedef struct {
int data [ maxn ];
int front, rear;
int size;//记录队列中元素个数
}
-
结构体中设置标志位tag,等于0表示删除元素,等于1表示增加元素,
当q.rear == q.front && tag == 0;表示队空。
当q.rear == q.front && tag == 1;表示堆满。 -
就是前面程序中所写的,若 ( q.rear + 1 ) % maxn = q.front 表示队满。