新建一个栈,读取标准输入3个整数3 4 5,入栈3 4 5,依次出栈,打印 5 4 3,新建循环队列(Maxsize为5),读取标准输入3 4 5 6 7,入队7时,队满,打印false,然后依次出队,输出 3 4 5 6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 20
#define MAXSIZE 5
typedef int Elemtype;
//定义栈的结构体
typedef struct{
Elemtype data[MAX];
int top;
}Stack;
//定义循环队列的结构体
typedef struct {
Elemtype data[MAXSIZE];
int front, rear;
}Queue;
//对栈初始化
void InitStack(Stack &S)
{
S.top = -1;
}
//对队列初始化
void InitQueue(Queue& Q)
{
Q.front = Q.rear = 0;
}
//入栈
bool Push(Stack& S)
{
int a;
if (S.top == MAX - 1)//判断栈是否满了
{
return false;
}
for (int i = 1; i < 4; i++)
{
scanf("%d", &a);
S.data[++S.top] = a;
}
return true;
}
//出栈
bool Pop(Stack& S, Elemtype& e)
{
if (S.top == -1)
{
return false;
}
e = S.data[S.top--];
return true;
}
//进队
bool EnQueue(Queue& Q, Elemtype &e)
{
while ((Q.rear + 1) % MAXSIZE != Q.front)
{
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXSIZE;
scanf("%d", &e);
}
return false;
}
//出队
bool DeQueue(Queue& Q, Elemtype& e)
{
if (Q.rear == Q.front)
{
return false;
}
e = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return true;
}
int main()
{
Elemtype a;
Elemtype e;
bool ret;
Stack S;
Queue Q;
InitQueue(Q);
InitStack(S);
Push(S);
scanf("%d", &e);
for (int i = S.top; i > -1; i--)
{
Pop(S, a);
printf("%2d", a);
}
printf("\n");
ret = EnQueue(Q, e);
if (ret) {
return true;
}
else {
printf("false\n");
}
while (Q.rear != Q.front)
{
DeQueue(Q, a);
printf("%2d", a);
}
return 0;
}