用c语言写两个栈来实现一个队列,完成队列的 Push 和 Pop 操作,队列中的元素为 int 类型,代码是什么
时间: 2024-05-13 13:13:37 浏览: 146
补充知识结构体-C语言栈和队列
以下是用 C 语言实现队列的代码,使用两个栈来模拟队列的 Push 和 Pop 操作:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top1;
int top2;
} Queue;
void init(Queue *q) {
q->top1 = -1;
q->top2 = -1;
}
int isEmpty(Queue *q) {
return q->top1 == -1 && q->top2 == -1;
}
int isFull(Queue *q) {
return q->top1 == MAXSIZE - 1 && q->top2 == MAXSIZE - 1;
}
void push(Queue *q, int value) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
if (q->top1 == -1) {
q->data[++q->top1] = value;
} else {
while (q->top1 != -1) {
q->data[++q->top2] = q->data[q->top1--];
}
q->data[++q->top1] = value;
while (q->top2 != -1) {
q->data[++q->top1] = q->data[q->top2--];
}
}
}
int pop(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
return q->data[q->top1--];
}
int main() {
Queue q;
init(&q);
push(&q, 1);
push(&q, 2);
push(&q, 3);
printf("%d\n", pop(&q));
printf("%d\n", pop(&q));
printf("%d\n", pop(&q));
printf("%d\n", pop(&q));
return 0;
}
```
注意:以上代码未经过完全测试,仅供参考。
阅读全文