用C语言设计并测试双头栈
时间: 2024-05-31 07:07:51 浏览: 14
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int top1;
int top2;
} DoubleStack;
void init(DoubleStack *s) {
s->top1 = -1;
s->top2 = MAX_SIZE;
}
int isEmpty1(DoubleStack *s) {
return s->top1 == -1;
}
int isEmpty2(DoubleStack *s) {
return s->top2 == MAX_SIZE;
}
int isFull(DoubleStack *s) {
return s->top2 - s->top1 == 1;
}
void push1(DoubleStack *s, int x) {
if (isFull(s)) {
printf("Stack Overflow\n");
exit(1);
}
s->data[++s->top1] = x;
}
void push2(DoubleStack *s, int x) {
if (isFull(s)) {
printf("Stack Overflow\n");
exit(1);
}
s->data[--s->top2] = x;
}
int pop1(DoubleStack *s) {
if (isEmpty1(s)) {
printf("Stack Underflow\n");
exit(1);
}
return s->data[s->top1--];
}
int pop2(DoubleStack *s) {
if (isEmpty2(s)) {
printf("Stack Underflow\n");
exit(1);
}
return s->data[s->top2++];
}
int main() {
DoubleStack s;
init(&s);
push1(&s, 1);
push1(&s, 2);
push1(&s, 3);
push2(&s, 4);
push2(&s, 5);
push2(&s, 6);
printf("Popped from stack 1: %d\n", pop1(&s));
printf("Popped from stack 2: %d\n", pop2(&s));
printf("Popped from stack 1: %d\n", pop1(&s));
printf("Popped from stack 2: %d\n", pop2(&s));
printf("Popped from stack 1: %d\n", pop1(&s));
printf("Popped from stack 2: %d\n", pop2(&s));
return 0;
}
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)