用C语言 实现1.初始化栈 2.出栈 3.入栈 4.取栈顶元素在页面输入数字1234 进行相应操作 写出完整代码
时间: 2024-09-27 17:07:58 浏览: 36
链栈的基本操作c语言.pdf
在C语言中,我们可以使用数组或链表来实现一个简单的栈数据结构。这里我们以一维数组为例,因为数组提供直接访问元素的便利。请注意,由于内存限制和动态调整大小,实际生产环境中可能会选择链表。以下是使用数组实现栈的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STACK_SIZE 10
// 定义栈结构体
typedef struct {
int stack[MAX_STACK_SIZE]; // 栈数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 出栈(如果栈不为空)
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return -1;
}
int item = s->stack[s->top];
s->top--;
return item;
}
// 入栈(检查栈是否已满)
void push(Stack *s, int value) {
if (s->top == MAX_STACK_SIZE - 1) {
printf("Stack is full.\n");
return;
}
s->stack[++s->top] = value;
}
// 取栈顶元素(无需出栈)
int peek(Stack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return -1;
}
return s->stack[s->top];
}
int main() {
Stack myStack;
init(&myStack);
// 输入数字并进行操作
int num;
while (scanf("%d", &num) == 1) {
switch (getchar()) { // 获取用户输入后的换行符
case 'p': // 出栈
printf("Popped element: %d\n", pop(&myStack));
break;
case 'i': // 入栈
push(&myStack, num);
printf("Pushed element: %d\n", num);
break;
case 'q': // 取栈顶元素但不改变栈
printf("Top element: %d\n", peek(&myStack));
break;
default:
printf("Invalid input, please enter 'p', 'i', or 'q'.\n");
}
}
return 0;
}
```
这个程序首先定义了一个栈结构,包含了栈数组和栈顶指针。然后实现了初始化、入栈、出栈以及查看栈顶元素的操作。在`main`函数里,通过用户的输入模拟了对栈的操作。
阅读全文