前言
栈是一种重要的数据结构,他可以允许在栈顶元素的输入和输出,他有着先入先出的特性,栈可以在函数的调用中做储存点,在递归运算中也大量的使用了
栈。
栈与线性表的关系
相同点:都是线性结构----前趋,后继,连续
不同点:栈具有固定的操作位置和操作方向
线性表是多样的操作位置和方向
同时要明确概念,栈顶,栈底,栈空,栈满
栈的数据结构
typedef int datatype;
typedef struct stack
{
datatype [100]; //可以存放100个数据
int top;
}seqstack;
栈的内存申请
seqstack *s =malloc(sizeof(seqstack));
入栈
void seqstack_push (seqstack s*,datatype a)
{
s ->data [s ->top] = a;
s ->top++;
}
出栈
void seqstack_pop (seqstack *s)
{
s ->top--;
}
栈顶元素的系修改
void seqstack_mod (seqstack *s,datatype a)
{
s ->data[s ->top] =a;
}
栈的释放
int seqstack_free (seqstack *s)
{
free (s);
}
结尾
由于栈可以理解为一个密封的容器,他只有一个出口,我们只能对于出口的元素的进行修改和查看,而不能像顺序表和链表一样进行插入,其实栈的主要功能还是栈的特殊性,栈的出栈和入栈