📄 顺序队列.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef int QElemType;
typedef int Status;
#define QUEUE_INIT_SIZE 100
#define QUEUEINCREMENT 10
typedef struct {
QElemType *rear;
QElemType *front;
int queuesize;
} SqQueue;
Status InitQueue(SqQueue &Q){
Q.rear=(QElemType*)malloc(QUEUE_INIT_SIZE*sizeof(QElemType));
if (!Q.rear) return OVERFLOW;
Q.front = Q.rear;
Q.queuesize = QUEUE_INIT_SIZE;
return OK;
}
Status Push (SqQueue &Q, QElemType e) {
int *p;
if (Q.front - Q.rear >= Q.queuesize) {
Q.rear=(QElemType*)realloc(
Q.rear,(Q.queuesize+QUEUEINCREMENT)* sizeof (QElemType));
if (!Q.rear) return OVERFLOW;
Q.front = Q.rear + Q.queuesize;
Q.queuesize += QUEUEINCREMENT;
}
for(p=Q.front++;p>Q.rear;p--)*(p+1)=*p;
*p=e;
return OK;
}
Status Pop (SqQueue &Q, QElemType &e) {
if (Q.front ==Q.rear) return ERROR;
e = *Q.front-- ;
return OK;
}
void OutQueue(SqQueue Q)
{ int *p;
if(Q.front == Q.rear){
printf("这是一个空栈!");
}
else
for(p= Q.front; p> Q.rear;p--)
printf("%d ", *p);
printf("\n");
}
//主函数
void main()
{ SqQueue s;
int cord; QElemType a;
printf("第一次使用必须初始化!\n");
do{
printf("\n 主菜单 \n");
printf(" 1 初始化顺序栈 ");
printf(" 2 插入一个元素 ");
printf(" 3 删除栈顶元素 ");
printf(" 4 结束程序运行 ");
printf("\n------------------------------------------------------------------------------\n");
printf("请输入您的选择( 1, 2, 3, 4)");
scanf("%d",&cord);
printf("\n");
switch(cord)
{ case 1:
InitQueue(s);
OutQueue(s);
break;
case 2:
printf("请输入要插入的数据元素:a=");
scanf("%d",&a);
Push(s,a);
OutQueue(s);
break;
case 3:
Pop(s,a);
OutQueue(s);
break;
case 4:
exit(0);
}
}while (cord<=4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -