2024年4月30日发(作者:)
链栈的基本操作
链栈是一种基于链表实现的栈结构,它的特点是可动态扩容,
不限制大小,可以存储任意类型的数据。
链栈的基本操作包括:创建、入栈、出栈、获取栈顶元素、判
断栈是否为空等。
1. 创建链栈
创建链栈的时候,我们需要先定义一个链栈结构体,其中包含
一个指向栈顶的指针和一个表示栈的长度的变量。
```
typedef struct Node {
int data;
struct Node *next;
} Node;
typedef struct Stack {
Node *top;
int length;
} Stack;
```
然后,我们需要编写一个函数来创建一个空的链栈。
```
Stack *createStack() {
Stack *stack = (Stack*)malloc(sizeof(Stack));
- 1 -
stack->top = NULL;
stack->length = 0;
return stack;
}
```
2. 入栈
入栈操作就是将一个元素压入栈顶,我们需要先创建一个新节
点,然后将新节点插入到栈顶位置。
```
void push(Stack *stack, int val) {
Node *node = (Node*)malloc(sizeof(Node));
node->data = val;
node->next = stack->top;
stack->top = node;
stack->length++;
}
```
3. 出栈
出栈操作就是将栈顶元素弹出,我们需要先获取栈顶元素,然
后将栈顶指针指向下一个节点。
```
int pop(Stack *stack) {
- 2 -
if (stack->top == NULL) {
printf('栈已经为空!
');
return -1;
}
Node *node = stack->top;
int val = node->data;
stack->top = node->next;
free(node);
stack->length--;
return val;
}
```
4. 获取栈顶元素
获取栈顶元素操作就是获取栈顶节点的值,但不删除该节点。
```
int getTop(Stack *stack) {
if (stack->top == NULL) {
printf('栈已经为空!
');
return -1;
}
- 3 -
return stack->top->data;
}
```
5. 判断栈是否为空
判断栈是否为空操作就是判断栈顶指针是否为空。
```
int isEmpty(Stack *stack) {
return stack->top == NULL;
}
```
通过以上基本操作,我们就可以使用链栈来存储数据,并进行
一些基本的数据操作。
- 4 -
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714430365a2444948.html
评论列表(0条)