实现链栈的各种基本运算的算法
时间: 2024-06-13 08:05:14 浏览: 136
在链栈中,栈的基本运算算法如下:-数据结构 李春葆
链栈是一种基于链式存储结构实现的栈,其数据元素用一个结点表示,其数据形式与单链表完全相同。链栈从本质上讲就是单链表,无非是限制了插入和删除运算只能在链头进行,所有可以说链栈是限制插入和删除运算只能在链头进行的单链表。由于在链头运算,所以不用像单链表那样附加头结点,更方便运算。
链栈的基本运算包括:初始化、判断栈是否为空、入栈、出栈、获取栈顶元素等。具体算法如下:
1.初始化链栈
```
void InitStack(linkstack *s) {
s->top = NULL;
}
```
2.判断栈是否为空
```
int IsEmpty(linkstack *s) {
return s->top == NULL;
}
```
3.入栈
```
void Push(linkstack *s, elemtype e) {
linkstack *p = (linkstack*)malloc(sizeof(linkstack));
p->data = e;
p->next = s->top;
s->top = p;
}
```
4.出栈
```
int Pop(linkstack *s, elemtype *e) {
if (IsEmpty(s)) {
return 0;
}
linkstack *p = s->top;
*e = p->data;
s->top = p->next;
free(p);
return 1;
}
```
5.获取栈顶元素
```
int GetTop(linkstack *s, elemtype *e) {
if (IsEmpty(s)) {
return 0;
}
*e = s->top->data;
return 1;
}
```
阅读全文