栈
一个特殊的线性表,
要求:只能在其一端进行数据的插入和删除–>栈顶
作用:可以改变序列的顺序,保留了:尾插,尾删,获取最后一个元素,获取size,检测时候为空。
**注意:**栈中没有查找任意元素的的操作,遍历操作。
栈顶插入—>入栈—>压栈
栈顶删除—>出栈—>弹出
示例一:一个栈的初始状态为空,现将元素1,2,3,4,5,A,B,C,D,E入栈,得到的结果:
(1)依次入栈,则出栈的顺序:E.D.C.B.A.5.4.3.2.1.
(2)进一个出一个:1,2,3,4,5,A,B,C,D,E
模拟一个栈:(C语言实现)伪代码
#pragma once
typedef int DataType;
#define MAX-SIZE100
静态栈(栈中元素个数受限)
//struct Stack
{
DataType array[MAX-SIZE];
int size;
};
``//
//动态栈
typedef struct Stack{
DataType*array;
int capacity;
int size;
}Stack;
//栈的初始化
void StackInit (Stackps)
assert (ps);
ps->array=(DatdType)malloc(sizeof)
//检测栈是否为空
int StackEmpty(Stackps)
{
asserrt(ps);
return 0 ==ps->size
};
//获取栈顶元素
DataType StackTop(Stackps){
assert(ps);
return ps->array[ps->size-1];
}
//获取元素个数
int StackSize(Stack*ps)
{
assert(ps);
return ps->size;
}