链栈的基本操作c语言源代码
时间: 2024-09-16 21:00:48 浏览: 45
链栈是一种基于链表的数据结构,其基本操作主要包括入栈(push)、出栈(pop)、查看栈顶元素(top)以及判断栈是否为空(is_empty)。下面是一个简单的链栈实现的C语言源代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} StackNode;
// 初始化空栈
StackNode* createStack() {
return (StackNode*)malloc(sizeof(StackNode));
}
// 入栈操作
void push(StackNode** top_ref, int value) {
StackNode* newNode = createStack();
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = *top_ref;
*top_ref = newNode;
}
// 出栈操作
int pop(StackNode** top_ref) {
if (*top_ref == NULL) {
printf("Stack is empty.\n");
return -1;
}
int poppedValue = (*top_ref)->data;
StackNode* temp = *top_ref;
*top_ref = (*top_ref)->next;
free(temp);
return poppedValue;
}
// 查看栈顶元素
int getTop(StackNode* top) {
if (top == NULL) {
printf("Stack is empty.\n");
return -1;
}
return top->data;
}
// 判断栈是否为空
int isEmpty(StackNode* top) {
return (top == NULL);
}
int main() {
StackNode* stackTop = NULL;
push(&stackTop, 50);
push(&stackTop, 40);
push(&stackTop, 30);
while (!isEmpty(stackTop)) {
int value = pop(&stackTop);
printf("Popped value: %d\n", value);
}
return 0;
}
```
在这个例子中,我们首先定义了链栈节点结构,并实现了创建空栈、入栈、出栈、查看栈顶元素以及检查栈是否为空的操作。`main`函数展示了如何使用这些操作。
阅读全文