用c语言写一个程序一个顺序栈中连续取出元素
时间: 2024-10-09 18:12:58 浏览: 30
在 C 语言中,我们可以创建一个简单的顺序栈(基于数组实现)并实现连续取出元素的功能。这里我们假设栈顶始终指向栈的第一个可用元素。以下是一个基础的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 栈数据存储区
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *stack) {
return stack->top == -1;
}
// 入栈操作
void push(Stack *stack, int value) {
if (stack->top < MAX_SIZE - 1) {
stack->data[++stack->top] = value;
} else {
printf("Stack overflow.\n");
}
}
// 出栈操作
int pop(Stack *stack) {
if (isEmpty(stack)) {
printf("Stack underflow.\n");
return -1; // 返回一个特殊值表示栈空
} else {
return stack->data[stack->top--];
}
}
// 连续取出元素,直到栈空
void continuousExtract(Stack *stack) {
while (!isEmpty(stack)) {
int val = pop(stack);
if (val != -1) {
printf("Popped element: %d\n", val);
}
}
}
int main() {
Stack myStack;
init(&myStack);
// 入栈示例
push(&myStack, 10);
push(&myStack, 20);
push(&myStack, 30);
continuousExtract(&myStack);
return 0;
}
```
在这个程序中,`push()` 函数用于入栈,`pop()` 函数用于出栈,而 `continuousExtract()` 函数则会持续出栈直到栈为空。
阅读全文