用C语言我在学习数据结构创建一个顺序栈实现出栈和入栈
时间: 2024-10-20 12:14:21 浏览: 38
在C语言中,你可以通过数组或链表来实现一个基本的顺序栈(也叫简单堆栈)。这里我们假设使用数组来演示。以下是基本的栈操作实现:
1. **栈的定义**:
- 使用数组 `stack` 存储元素,初始化一个容量为 `MAX_SIZE` 的数组。
```c
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1; // 栈顶指针,初始化为-1表示空栈
```
2. **入栈(push)**:
- 当需要将元素 `item` 入栈时,检查栈是否已满。如果未满,则将 `top` 加一,并把元素存入数组相应位置。
```c
void push(int item) {
if (top < MAX_SIZE - 1) {
top++;
stack[top] = item;
} else {
printf("Stack overflow.\n");
}
}
```
3. **出栈(pop)**:
- 如果栈非空,取出并返回栈顶元素,然后将 `top` 减一。若栈为空,返回错误信息。
```c
int pop() {
if (top >= 0) {
int item = stack[top];
top--;
return item;
} else {
printf("Stack underflow.\n");
return -1; // 返回特殊值表示错误
}
}
```
4. **查看栈顶元素(peek)**:
- 如果栈非空,直接返回栈顶元素,不需要移除。
```c
int peek() {
if (top >= 0) {
return stack[top];
} else {
printf("Stack is empty.\n");
return -1;
}
}
```
5. **判断栈是否为空(is_empty)**:
```c
int is_empty() {
return top == -1;
}
```
阅读全文