写一算法将一顺序栈中的元素依次取出并输出 c语言代码
时间: 2023-06-03 08:05:48 浏览: 102
以下是基于C语言的算法,目的是将一顺序栈(stack)中的元素依次取出并输出:
```c
// 定义一个结构体表示栈
typedef struct Stack {
int* data; // 存储数据的指针
int top; // 栈顶指针
int capacity; // 栈的容量
} Stack;
// 初始化栈
void initialize(Stack* stack, int capacity) {
stack->data = (int*)malloc(capacity * sizeof(int)); // 动态分配存储空间
stack->top = -1; // 设置栈顶指针
stack->capacity = capacity; // 设置栈的容量
}
// 判断栈是否为空
int is_empty(Stack* stack) {
return stack->top == -1;
}
// 判断栈是否已满
int is_full(Stack* stack) {
return stack->top == stack->capacity - 1;
}
// 将一个元素入栈
void push(Stack* stack, int value) {
if (is_full(stack)) {
printf("Stack Overflow\n");
return;
}
stack->data[++stack->top] = value; // 先将栈顶指针加1,再将元素入栈
}
// 将栈顶元素出栈并返回其值
int pop(Stack* stack) {
if (is_empty(stack)) {
printf("Stack Underflow\n");
return -1;
}
return stack->data[stack->top--]; // 先将栈顶元素弹出,再将栈顶指针减1
}
// 依次取出栈中的元素并输出
void print_stack(Stack* stack) {
while (!is_empty(stack)) { // 如果栈不为空,则循环
printf("%d ", pop(stack)); // 将栈顶元素出栈并输出
}
printf("\n"); // 输出完毕后换行
}
int main() {
Stack stack;
initialize(&stack, 10); // 初始化栈并设置容量为10
// 依次将元素1~10入栈
for (int i = 1; i <= 10; i++) {
push(&stack, i);
}
// 依次取出栈中的元素并输出
print_stack(&stack);
return 0;
}
```
希望这个算法对您有所帮助!