c++编写一个数组实现两个栈
时间: 2024-01-23 15:04:13 浏览: 82
可以在数组的两端分别设置一个指针,分别表示两个栈的栈顶位置,即可实现两个栈。具体实现可以参照以下代码:
```c
#define STACK_SIZE 100 // 栈的最大长度
int stack[STACK_SIZE];
int top1 = -1; // 第一个栈的栈顶位置
int top2 = STACK_SIZE; // 第二个栈的栈顶位置
// 第一个栈的入栈操作
void push1(int value) {
if (top1 + 1 == top2) { // 栈已满
printf("栈已满,无法入栈!\n");
return;
}
stack[++top1] = value;
}
// 第一个栈的出栈操作
int pop1() {
if (top1 == -1) { // 栈已空
printf("栈已空,无法出栈!\n");
return -1;
}
return stack[top1--];
}
// 第二个栈的入栈操作
void push2(int value) {
if (top2 - 1 == top1) { // 栈已满
printf("栈已满,无法入栈!\n");
return;
}
stack[--top2] = value;
}
// 第二个栈的出栈操作
int pop2() {
if (top2 == STACK_SIZE) { // 栈已空
printf("栈已空,无法出栈!\n");
return -1;
}
return stack[top2++];
}
```
阅读全文