用C语言实现栈的基本操作
时间: 2023-07-18 08:05:40 浏览: 50
栈是一种具有后进先出(LIFO)特性的数据结构,它可以用数组或链表来实现。以下是使用数组实现栈的基本操作:
```
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
// 入栈
void push(int item) {
if (top >= MAX_SIZE - 1) {
printf("Stack overflow!\n");
return;
}
top++;
stack[top] = item;
}
// 出栈
int pop() {
if (top < 0) {
printf("Stack underflow!\n");
return -1;
}
int item = stack[top];
top--;
return item;
}
// 获取栈顶元素
int peek() {
if (top < 0) {
printf("Stack is empty!\n");
return -1;
}
return stack[top];
}
// 判断栈是否为空
int is_empty() {
return top == -1;
}
// 打印栈中的元素
void print_stack() {
if (is_empty()) {
printf("Stack is empty!\n");
return;
}
printf("Stack elements: ");
for (int i = top; i >= 0; i--) {
printf("%d ", stack[i]);
}
printf("\n");
}
// 测试
int main() {
push(1);
push(2);
push(3);
print_stack();
printf("Top element: %d\n", peek());
printf("Popped element: %d\n", pop());
print_stack();
return 0;
}
```
上述代码中,我们使用数组 `stack` 来存储栈中的元素,使用变量 `top` 来记录栈顶的位置。其中,`push()` 函数用于将元素入栈,`pop()` 函数用于将元素出栈,`peek()` 函数用于获取栈顶元素,`is_empty()` 函数用于判断栈是否为空,`print_stack()` 函数用于打印栈中的元素。在测试部分,我们演示了如何使用这些函数来操作栈。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)