#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
#define MaxSize 10
#define ERROR -1
typedef struct Node {
//数组形式储存数值
ElemType* data;
struct Node* next;
int rear;
int front;
};
typedef Node* List;
void push(ElemType elem, List L) {
//判断队列是否满载
//这里rear需要+1,才能代表是再添加将达到满载,此时情况已经满了,再加会真正报错
if ((L->rear + 1) % MaxSize == L->front) {
printf("队列已满");
return;
}
//这里rear的新值为以MaxSize取余后的值
L->rear = (L->rear + 1) % MaxSize;
//入栈数值以数组形式储存
L->data[L->rear] = elem;
}
ElemType pop(List L) {
//满队列不会出现front=rear的情况
if (L->front == L->rear) {
printf("队列空");
//pop函数返回值为ELemType型,即非void型,需要一个返回值,不可以同push一样空返回
return ERROR;
}
else {
//?
//返回值是出栈后的首项
L->front = (L->front + 1) % MaxSize;
return L->data[L->front];
}
}
int main() {
//队列创建
List L;
L = (Node*)malloc(sizeof(Node));
L->next = NULL;
L->rear = 0;
L->front = 0;
ElemType elem;
scanf_s("%d", &elem);
//入栈
push(elem, L);
//出栈
pop(L);
}