ADT
Note
ADT 队列(queue) Data
queue是一种先进先出(First In First Out,FIFO)的数据结构,他只有一个出口 队列只有队头队尾才能被外界使用,不允许遍历
Operation
push():入队pop():出队front():返回队列首元素back():返回队列尾元素isemtpy():是否为空size():返回元素个数endADT
具体实现
队列体
- 数组队列
typedef struct queue
{
int front;
int rear;
elem Queue_data[NUMBER];
}Queue;- 链表队列(循环队列)
typedef struct queue
{
int front;
elem data;
elem* next;
}Queue;初始化
void InitQueue(Queue* q)
{
q->front = 0;
q->rear = 0;
q->data = {NULL};
//S->next = NULL;
}出入队列
- 出队列
elem front(Queue* q)//DeQueue
{
if(q->rear = q->front)
{
printf("overflow");
return;
}
int x = q->data[q->front];
q->front = (q->front + 1) % NUMBER;/*循环队列*/
return x;
}- 入队列
void pop(Queue* q, elem data)//EnQueue
{
if(q->rear = q->front)
{
printf("overflow");
return;
}
q->data[q->rear] = data;
q->rear = (q->rear + 1) % NUMBER;/*循环队列*/
}返回队列元素
int front(Queue* q)
{
return q->data[q->front];
}是否为空
bool isEmpty(Queue* q)
{
if(q->front == q->rear)
{
return true;
}
return false;
}元素个数
(rear + maxsize - front) % maxsize