栈的定义
- 栈: 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。
- 特点:后进先出(LIFO)。

我们来检验一下你是否明白了后进先出,
已知元素的入栈顺序为abcde,则出栈顺序为多少?哪个不可能
答案:edcba ,bcdea,dcbae 可能,cabde 不可能
基本运算:
- 创建空栈:
CreateStack(len) - 清空栈:
ClearStack(S) - 判断是否栈空:
EmptyStack(S) - 判断是否栈满:
FullStack(S) - 元素进栈:
PushStack(s,x) - 元素出栈:
PopStack(S) - 取栈顶元素:
GetTop(S)
栈的存储方式:顺序存储,链式存储
顺序栈:
它是顺序表的一种,具有顺序表相同的存储结构,由数组定义,配合用数组下标表示的栈顶指针tip(相对指针)完成各种操作。
typedef int data_t; //定义栈中数据元素的数据类型
typedef struct{
data_t *data; //用指针指向栈的存储空间
int maxlen; //当前栈的最大元素个数
int top; //指示栈顶位置(数组下标)的变量
}seqstack_t; //顺序栈类型定义
顺序栈基本运算代码实现:
创建空栈:CreateStack(len)
#include"sqstack.h"
sqstack *stack_create(int len){
sqstack *s;
if((s=(sqstack *)malloc(sizeof(sqstack)))==NULL){
printf("malloc false\n");
return NULL;
}
if((s->data=(datatype *)malloc(len *sizeof(datatype))) == NULL){
printf("malloc false\n");
return NULL;
}
s->maxlen = len;
s->top =-
本文介绍了栈这种数据结构,包括其后进先出的特点和基本运算,如创建空栈、元素进栈、出栈及取栈顶元素。文章详细讲解了顺序栈和链式栈的概念,并提供了C语言的代码实现。最后讨论了顺序栈和链式栈的区别,为后续学习队列奠定了基础。
最低0.47元/天 解锁文章
836

被折叠的 条评论
为什么被折叠?



