1.依次进栈数据为1,2,3,4,5,再全部出栈,输出出栈序列。 2.先进栈3,2,1,出栈2次,进栈4,5,6,7,再全部出栈,输出每次入栈,出栈序列。 C语言代码
时间: 2024-10-24 08:08:27 浏览: 31
习题三第页-数据结构习题
1. 当依次进栈数据为1, 2, 3, 4, 5时,由于栈的特点是后进先出(FILO),所以出栈顺序会是从最后一个元素开始。因此,完整的出栈序列就是5, 4, 3, 2, 1。
2. 先进栈(3, 2, 1)然后出栈2次,意味着会弹出栈顶的两个元素,即先出3,再出2。接着进栈(4, 5, 6, 7),最后全部出栈,顺序仍然是从栈顶到栈底,即7, 6, 5, 4。以下是对应的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int stack[100], top = -1;
// 第一次操作
top++;
stack[top] = 3;
top++;
stack[top] = 2;
top++;
stack[top] = 1;
printf("Push: 1, 2, 3\n");
// 出栈2次
if (top > 0) {
printf("Pop: %d\n", stack[top]);
top--;
printf("Pop: %d\n", stack[top]);
}
// 第二次操作
top++;
stack[top] = 4;
top++;
stack[top] = 5;
top++;
stack[top] = 6;
top++;
stack[top] = 7;
printf("Push: 4, 5, 6, 7\n");
// 再次出栈所有元素
while (top >= 0) {
printf("Pop: %d\n", stack[top]);
top--;
}
return 0;
}
```
运行此代码将得到相应的出栈序列。注意,这个例子假设数组大小足够大,实际编程中应检查数组边界。
阅读全文