一、顺序队列
利用数组空间来保存队列元素,通常使用循环队列。
开辟一块地址连续的数组空间,假设元素个数为n,利用队头指针front和队尾指针rear来实现入队以及出队操作。
二、顺序队列的节点类型构造
开辟一个数组大小为10的空间,front指向队头元素,rear指向队尾元素的下一个。
注意:顺序队列的最后一片空间是不存数据的。
则:队空条件判断:front == rear
队满条件判断:(rear+1)%MAXNODE == front
三、顺序队列的相关操作
1.初始化队列
初始化队列:创建一个空队列,队列中没有任何元素
初始化front和rear为0
2.入队
入队:来了一个新元素,插入到队尾
3.出队
出队:从队头删除一个元素,并把队头元素的数据返回给上级用户
4.获取队头元素
获取队头元素:只获取元素,但不删除队头
5.判断队列是否为空
判断队列是否为空,如果为空则返回1,不为空则返回0
6.判断队列是否为满
判断队列是否为满,如果为满则返回1,不为满则返回0
7.清空队列
8.销毁队列
四、测试
#include <stdio.h>
#include "SeQueue.h"
int main(void)
{
SeQueue * q = NULL;
int num = 0;
/* 1.创建一个新的队列 */
q = SeQueue_Create();
while(1)
{
scanf("%d",&num);
if(0 == num)
{
break;
}
/* 将从键盘输入的数据入队 */
SeQueue_InQueue(q,num);
}
//获取队首元素
SeQueue_GetFront(q,&num);
printf("队首元素:%d\n",num);
printf("依次将队列中的数据出队:\n");
while(!SeQueue_IsEmpty(q))
{
SeQueue_OutQueue(q,&num);
printf("%d ",num);
}
printf("\n");
}
测试结果