目录
顺序队列
创建空队列:
判断队列空:
入队:
队列
队列是限制在两端进行插入操作和删除操作的线性表 允许进行存入操作的一端称为“队尾” 允许进行删除操作的一端称为“队头” 当线性表中没有元素时,称为“空队” 特点 :先进先出(FIFO)
创建队列 :CreateQueue ()
清空队列 :ClearQueue (Q)
判断队列空 :EmptyQueue(Q)
判断队列满 :FullQueue(Q)
入队 :EnQueue (Q , x)
出队 :DeQueue(Q)
顺序队列
typedef int data_t ; /*定义队列中数据元素的数据类型*/
#define N 64 /*定义队列的容量*/
typedef struct {
data_t data[N] ; /*用数组作为队列的储存空间*/
int front, rear ; /*指示队头位置和队尾位置的指针*/
} sequeue_t ; /*顺序队列类型定义*/
规定:front指向队头元素的位置; rear指向队尾元素的下一个位置。
在队列操作过程中,为了提高效率,以调整指针代替队列元素的移动,并将数组作为循环队列的操作空间。
为区别空队和满队,满队元素个数比数组元素个数少一个。
创建空队列:
sequeue_t *CreateQueue () {
sequeue_t *sq = (sequeue_t *)malloc(sizeof(sequeue_t));
sq->front = sq->rear = maxsize -1;
return sq;
}
判断队列空:
int EmptyQueue (sequeue_t *sq) {
return (sq->front = = sq->rear) ;
}
入队:
将新数据元素x插入到队列的尾部。
void EnQueue (sequeue_t *sq , data_t x) {
sq->data[sq->rear] = x ;
sq->rear = (sq->rear + 1) % N ;
return ;
}
规定:
front指向队头元素的位置;
rear指向队尾元素的下一个位置。
在队列操作过程中,为了提高效率,以调整指针代替队列元素的移动,并将数组作为循环队列的操作空间。
为区别空队和满队,满队元素个数比数组元素个数少一个。