一运行到出队就发生这样。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define Maxsize 100
typedef int Datatype;
typedef struct {
Datatype data[Maxsize];
int front;
int rear;
}SqQueue;
//初始化;
void initQueue(SqQueue* Q) {
Q->front = Q->rear = 0;
}
//判空;
bool empty(SqQueue* Q) {
if (Q->rear == 0)
printf("为空\n");
else
printf("非空\n");
return 1;
}
//判满
bool isfull(SqQueue* Q) {
if (Q->rear == Maxsize)
printf("已满\n");
else
printf("非满\n");
return 1;
}
//入队;
bool push(SqQueue* Q, Datatype x) {
if (Q->rear == Maxsize)
return 0;
else
Q->data[Q->rear++] = x;
return 1;
}
//出队;
bool pop(SqQueue* Q, Datatype &x) {
if (Q->rear == 0)
return 0;
else
x = Q->data[Q->front++];
return 1;
}
//计算队列长度;
int getlength(SqQueue* Q) {
int L = 0;
L = (Q->rear - Q->front + Maxsize) % Maxsize;
printf("%d", L);
return L;
}
//读取队列
void sqqueueprintf(SqQueue*Q) {
while (Q->front!=Q->rear)
{
printf("%6d", Q->data[Q->front++]);
}
}
int main() {
SqQueue Q;
Datatype x;
initQueue(&Q);
empty(&Q);
for (int i = 0; i < 5; i++)
{
push(&Q, i);
}
int i = 1;
while (i)
{
printf("当前的队列如下:\n");
sqqueueprintf(&Q);
printf("\n");
printf("------------------------------------\n");
printf(" Main Menu \n");
printf(" 1 入队 \n");
printf(" 2 出队 \n");
printf(" 3 清屏 \n");
printf(" 0 结束程序 \n");
printf("------------------------------------\n");
printf("请输入你选择的菜单号<1, 2, 3, 0>:\n");
scanf_s("%d", &i);
switch (i)
{
case 1:
printf("请输入入队元素:");
scanf_s("%d", &x);
push(&Q, x);
printf("\n\n");
break;
case 2:
pop(&Q, x);
printf("\n\n");
break;
case 3:
system("cls");
break;
case 0:
exit(0);
break;
default:
printf("输入有误\n");
break;
}
}
return 0;
}
