和栈相反,队列是一种先进先出的的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的队列是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾,允许删除的一端则稀烂为队头。
顺序队列,即队列的顺序存储结构。由于队列的队头和队尾的位置均发生变化,因此在队列顺序存储结构中,除了用一组地址连续的存储单元依次存放从队头到队尾的元素之外,还需要附设两个指针front和rear指向队头和队尾元素。
为了操作方便,在此约定:在非空队列中,队头指针front始终指向队头元素,而队尾rear始终指向队尾元素下一个位置。
顺序队列的类型描述:
//顺序队列的类型描述
#define MAXSIZE 100
typedef int ElemType;
typedef struct{
ElemType *data;
int front,rear;
}SqQueue;
基本操作:
1. 初始化顺序队列Init_SqQueue(SqQueue* Q):
//初始化顺序队列
void Init_SqQueue(SqQueue* Q){
Q->data = (SqQueue*)malloc(sizeof(SqQueue) * MAXSIZE);
Q->front = Q->rear = 0;
}
2. 销毁顺序队列Destroy_SqQueue(SqQueue* Q)