使用c语言选择顺序存储结构,定义一个空栈类,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。
时间: 2024-10-07 09:05:49 浏览: 35
在C语言中,我们可以使用数组作为顺序存储结构来实现一个简单的栈。首先,我们需要定义一个栈结构体,包含栈顶指针top和数组元素。接着,我们会定义三个基本操作:初始化栈、入栈(push)、出栈(pop)以及查看栈顶元素但不删除(peek)。
```c
#include <stdio.h>
#define MAX_SIZE 10
// 定义栈结构体
typedef struct {
int stack[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 入栈操作
void push(Stack *s, int value) {
if (s->top < MAX_SIZE - 1) {
s->stack[++s->top] = value;
printf("Pushed element %d to the stack.\n", value);
} else {
printf("Stack is full, can't push more elements.\n");
}
}
// 出栈操作
int pop(Stack *s) {
if (s->top >= 0) {
return s->stack[s->top--];
} else {
printf("Stack is empty, nothing to pop.\n");
return -1; // 返回一个特殊值表示栈为空
}
}
// 查看栈顶元素但不删除
int peek(Stack *s) {
if (s->top >= 0) {
return s->stack[s->top];
} else {
printf("Stack is empty, no element on top.\n");
return -1;
}
}
// 主函数示例
int main() {
Stack myStack;
init(&myStack);
// 验证并操作栈
int data[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i) {
push(&myStack, data[i]);
printf("Top element after push: %d\n", peek(&myStack));
int popped = pop(&myStack);
if (popped != -1)
printf("Popped element: %d\n", popped);
}
return 0;
}
```
在这个例子中,主程序会创建一个栈,依次将给定的5个数字入栈,并在每次入栈后检查栈顶元素。如果栈非空,还会弹出一个元素并打印出来。注意,在实际应用中,你可能需要处理更复杂的情况,例如错误处理和动态调整栈大小等。
阅读全文