c语言栈的链式存储核心代码
时间: 2024-10-16 07:13:51 浏览: 16
在C语言中,栈的链式存储通常通过定义一个节点结构体(Node)来实现,每个节点包含数据域和指向下一个节点的指针。以下是基本的核心代码示例:
```c
// 定义栈节点结构体
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} StackNode;
// 初始化空栈
StackNode* stack_init() {
StackNode* top = NULL;
return top;
}
// 入栈操作
void push(StackNode** top, int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = *top;
*top = newNode;
} else {
printf("Memory allocation failed.\n");
}
}
// 出栈操作
int pop(StackNode** top) {
if (*top == NULL) {
printf("Stack is empty.\n");
return -1; // 返回错误值表示栈空
} else {
int value = (*top)->data;
StackNode* temp = *top;
*top = (*top)->next;
free(temp); // 释放已出栈节点的内存
return value;
}
}
// 判断栈是否为空
int isEmpty(StackNode* top) {
return top == NULL;
}
// 展示栈顶元素但不删除
int peek(StackNode* top) {
if (isEmpty(top)) {
printf("Stack is empty.\n");
return -1;
} else {
return top->data;
}
}
阅读全文