帮我写出链栈的查找,插入,删除的C语言代码
时间: 2024-10-12 20:08:04 浏览: 30
史上最全经典数据结构算法c语言实现代码合集
链栈是一种基于链表实现的数据结构,由于它的顶部元素可以直接访问,查找、插入和删除操作相对简单。这里是一个基础的单节点链栈(仅包含栈顶操作)的示例,假设我们有一个`Node`结构体表示链表节点:
```c
// 定义链栈节点
typedef struct Node {
int data;
struct Node* next;
} StackNode;
// 初始化空链栈
StackNode* createStack() {
return NULL;
}
// 查找(不存在则返回false)
bool search(StackNode* stack, int value) {
if (stack == NULL || stack->data == value)
return true; // 如果栈为空或值等于栈顶,认为找到
else
return false; // 否则遍历查找
}
// 插入(在栈顶添加元素)
void insert(StackNode** stack, int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->data = value;
newNode->next = *stack;
*stack = newNode;
}
// 删除(移除并返回栈顶元素)
int delete(StackNode** stack) {
if (*stack == NULL) {
printf("Stack is empty.\n");
return -1; // 或者抛出异常
}
int topValue = (*stack)->data;
StackNode* temp = *stack;
*stack = (*stack)->next;
free(temp); // 释放已删除节点的内存
return topValue;
}
```
注意这是一个非常基础的例子,实际应用中可能会有错误检查、循环等更复杂的情况。此外,这个实现没有处理特殊情况,如删除空栈。如果你需要支持更复杂的操作,比如查看栈顶而不删除,可以考虑使用指针操作。
阅读全文