请将main函数中的使用双栈操作补充完整
时间: 2024-12-02 10:21:42 浏览: 0
在`main`函数中,我们可以演示一些基本的双栈操作。假设每个栈只允许添加整数,并且有最小值检查功能。下面是`main`函数的一个示例,包含了一些常见的操作,如入栈、出栈、查看栈顶元素以及检查是否有溢出:
```c
#include <stdio.h>
// ... (上述的Stack结构体和相关函数)
int main() {
Stack stack1, stack2;
init(&stack1, &stack2);
int values[] = {5, 3, 7, 1, 9};
// 入栈
for (int i = 0; i < sizeof(values) / sizeof(int); ++i) {
push(&stack1, values[i]);
push(&stack2, values[i]);
// 检查栈1是否有溢出
if (stack1.top + 1 == MAX_SIZE) {
printf("Stack 1 is full, not pushing %d.\n", values[i]);
break;
}
// 打印栈顶元素
printf("Top of stack 1: %d, Top of stack 2: %d\n", pop(&stack1), pop(&stack2));
}
// 出栈并检查是否空
while (!stack1.is_empty()) {
int top_value = pop(&stack1);
printf("Popped from stack 1: %d\n", top_value);
}
// 检查栈是否为空
if (stack1.is_empty() && stack2.is_empty()) {
printf("Both stacks are empty.\n");
} else {
printf("One or both stacks have elements left.\n");
}
return 0;
}
```
这个示例完成了基本的入栈、查看栈顶元素、出栈,并展示了一个栈满的情况。注意,这里没有实现`is_empty`函数,你需要自己添加一个这样的辅助函数来判断栈是否为空。
阅读全文