栈的增删查改 C语言
时间: 2023-07-09 20:24:08 浏览: 36
栈是一种后进先出(Last In First Out,LIFO)的数据结构,只允许在栈顶进行插入和删除操作。栈的操作包括入栈(Push)、出栈(Pop)、查看栈顶元素(Top)等。
下面是一个栈的示例代码,包括增删查改操作:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100 // 栈的最大容量
int stack[MAX_SIZE]; // 定义栈,使用数组实现
int top = -1; // 栈顶位置,初始值为-1
bool is_empty() {
return top == -1; // 栈空的条件是栈顶位置为-1
}
bool is_full() {
return top == MAX_SIZE - 1; // 栈满的条件是栈顶位置等于最大容量减1
}
void push(int value) {
if (is_full()) {
printf("栈已满,无法插入元素!\n");
return;
}
stack[++top] = value; // 将元素插入栈顶
}
int pop() {
if (is_empty()) {
printf("栈已空,无法删除元素!\n");
return -1;
}
return stack[top--]; // 返回栈顶元素,并将栈顶位置指向下一个元素
}
int top_element() {
if (is_empty()) {
printf("栈已空,无法查看栈顶元素!\n");
return -1;
}
return stack[top]; // 返回栈顶元素
}
void modify(int index, int value) {
if (index < 0 || index > top) {
printf("修改位置不合法!\n");
return;
}
stack[index] = value; // 修改栈中指定位置的元素
}
void print_stack() {
printf("栈中元素为:");
for (int i = 0; i <= top; i++) {
printf("%d ", stack[i]);
}
printf("\n");
}
int main() {
// 入栈操作
push(1);
push(2);
push(3);
push(4);
// 查看栈顶元素
printf("栈顶元素为:%d\n", top_element());
// 修改栈中元素
modify(2, 5);
// 删除栈顶元素
int value = pop();
printf("删除的元素为:%d\n", value);
// 输出栈中元素
print_stack();
return 0;
}
```
在上面的代码中,我们定义了 `push()` 函数用于将元素入栈,`pop()` 函数用于将栈顶元素出栈,`top_element()` 函数用于查看栈顶元素,`modify()` 函数用于修改栈中指定位置的元素,`print_stack()` 函数用于输出栈中所有元素。在 `main()` 函数中,我们先将四个元素入栈,然后依次调用上述函数进行栈的操作。