设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈【数据结构】【栈】用C语言实现
时间: 2024-11-20 08:45:11 浏览: 32
在 C 语言中,你可以使用数组或链表来实现这个栈结构。这里我将以数组作为例子来描述如何实现这个功能。假设我们有一个整型数组 `stack` 来存储元素,并维护一个变量 `top` 记录栈顶位置。
```c
#include <stdio.h>
#define MAX_SIZE 100 // 栈的最大容量
int stack[MAX_SIZE]; // 定义栈数组
int top = -1; // 初始栈顶指针为-1表示栈为空
void push(int value) {
if (top < MAX_SIZE - 1) { // 如果栈未满
top++;
stack[top] = value;
} else {
printf("Stack is full. Can't push %d.\n", value);
}
}
int pop() {
if (top != -1) { // 若栈非空
int popped_value = stack[top];
top--;
return popped_value;
} else {
printf("Stack is empty. No element to pop.\n");
return -1; // 返回特殊值表示栈空
}
}
// 主函数用于接收用户输入并操作栈
int main() {
int input;
while (scanf("%d", &input) == 1 && input != -1) {
push(input);
}
while (input == -1) {
input = scanf("%d", &input); // 输入-1时再次读取
if (input == 1) {
int value = pop(); // 输出栈顶并弹出
if (value != -1)
printf("Popped value: %d\n", value);
}
}
return 0;
}
```
在这个程序中,用户通过输入连续的整数,当输入 `-1` 时,栈会弹出并打印栈顶元素。注意这个实现没有处理特殊情况,例如用户连续输入多个 `-1` 或者一次性输入大量元素可能导致栈溢出,实际应用中需要添加适当的错误检查和边界条件处理。
阅读全文