c语言链栈的基本操作
时间: 2024-09-26 19:05:45 浏览: 19
C语言中的链栈是一种基于动态内存分配的数据结构,它通过链表来存储数据元素。链栈的主要操作包括:
1. **初始化** (Create Stack): 创建一个新的空链栈。
```c
typedef struct Node {
int data;
struct Node* next;
} StackNode;
StackNode* createStack() {
StackNode* top = NULL;
return top;
}
```
2. **入栈** (Push): 向链栈顶部添加新元素。
```c
void push(StackNode** top, int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->data = value;
newNode->next = *top;
*top = newNode;
}
```
3. **出栈** (Pop): 删除并返回链栈顶部的元素。
```c
int pop(StackNode** top) {
if (*top == NULL) {
printf("Stack is empty");
return -1; // 或者抛出异常
}
int data = (*top)->data;
StackNode* temp = *top;
*top = (*top)->next;
free(temp);
return data;
}
```
4. **查看栈顶元素** (Top): 获取链栈顶部的元素,但不删除。
```c
int peek(StackNode* top) {
if (top == NULL) {
printf("Stack is empty");
return -1; // 或者抛出异常
}
return top->data;
}
```
5. **判断栈是否为空** (IsEmpty): 检查链栈是否为空。
```c
int isEmpty(StackNode* top) {
return top == NULL;
}
```