只允许在一端进行插入,在另一端进行删除的操作的线性表,又称为先进先出(First In First Out)线性表,简称FIFO
队头:允许进行删除操作的一端队尾:允许进行插入操作的一端
空队:不含任何数据元素的队
#include <stdio.h>
#include <stdlib.h>
//定义队列
typedef struct Node {
int data;
struct Node* next;
}Node;
//初始化队列
Node* initQueen() {
Node* Q = (Node*)malloc(sizeof(Node));
Q->data = 0;
Q->next = NULL;
return Q;
}
//入队
void enQueen(Node* Q, int data) {
Node* q = Q;
Node* node= (Node*)malloc(sizeof(Node));
node->data = data;
for (int i = 0; i < Q->data; i++) {
q=q->next;
}
node->next = q->next;
q->next = node;
Q->data++;
}
//判断是否为空
int isEmpty(Node* Q) {
if (Q->data == 0 || Q->next == NULL) {
return 1;
}
else
{
return 0;
}
}
//出队操作
int deQueen(Node* Q) {
if (isEmpty(Q)) {
return -1;
}
else
{
Node* node = Q->next;
int data = node->data;
Q->next = node->next;
free(node);
Q->data--;
return data;
}
}
//遍历队列
void printQueen(Node* Q) {
Node* node = Q->next;
while (node) {
printf("%d->", node->data);
node = node->next;
}
printf("NULL\n");
}
int main() {
Node* Q = initQueen();
enQueen(Q, 1);
enQueen(Q, 2);
enQueen(Q, 3);
enQueen(Q, 4);
printQueen(Q);
int data=deQueen(Q);
printf("data=%d\n", data);
printQueen(Q);
return 0;
}