帮我写出顺序栈查找,插入,删除的C语言代码
时间: 2024-10-12 15:08:03 浏览: 28
如何写出高效优美的C语言代码
在C语言中,我们可以使用数组或链表实现一个简单的顺序栈。这里我将提供基本的顺序栈操作(查找、插入和删除)的示例,使用数组来实现:
```c
#include <stdio.h>
#define MAX_SIZE 50
// 定义栈结构
typedef struct {
int stack[MAX_SIZE]; // 栈元素存储
int top; // 栈顶指针
} Stack;
// 初始化空栈
void init(Stack *s) {
s-1);
}
// 查找元素
int search(Stack *s, int value) {
for (int i = 0; i <= s->top; i++) {
if (s->stack[i] == value)
return i; // 返回元素位置
}
return -1; // 如果未找到,返回-1
}
// 插入元素到栈顶
void push(Stack *s, int item) {
if (s->top < MAX_SIZE - 1) { // 防止溢出
s->stack[++s->top] = item;
} else {
printf("Stack is full.\n");
}
}
// 删除并返回栈顶元素
int pop(Stack *s) {
if (!isEmpty(s)) {
return s->stack[s->top--]; // 减少栈顶指针并返回元素
} else {
printf("Stack is empty.\n");
return -1;
}
}
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 10);
push(&myStack, 20);
push(&myStack, 30);
int index = search(&myStack, 20); // 查找20的位置
if (index != -1)
printf("Found at position %d\n", index + 1); // 因为索引从0开始
int poppedValue = pop(&myStack); // 删除栈顶元素并打印
printf("Popped value: %d\n", poppedValue);
return 0;
}
```
在这个例子中,我们使用了一个固定大小的数组来表示栈。如果需要动态扩展,可以考虑使用链表替代。
阅读全文