数据结构 —栈结构
0# 什么是栈
在程序设计中,我们都会接触过“堆栈”的概念,其实堆栈是两个不同的概念,栈是一种特殊的数据结构,在处理重要数据的现场保护有着重要的意义。
栈结构是从数据的运算分类的,塔也是一种线性结构。如图。
举个例子,栈好比如我们生活的堆箱子,先来的货物放在下面,后来的方正上面,这是栈的特性,先进后出。
在栈结构中只有栈顶的元素可以访问,这样栈结构的数据运行非常简单,一般栈结构的基本操作有两个:
- 入栈,将数据保存到栈顶,进行入栈操作前,先修改栈顶引用,使其向上移动一个元素单位,然后将数据保存到栈顶所指位置。
- 出栈,将栈顶数据数据弹出,通过修改栈顶引用,使其指向下一个元素。
顺序栈案例
class Data
{
public string name;
public int age;
}
class StackType
{
static int MAXLEN = 50;
Data[] data = new Data[MAXLEN + 1];
int top; //栈顶
//初始化
public StackType STInit()
{
StackType ST;
if ((ST = new StackType()) != null)
{
ST.top = 0;
return ST;
}
return null;
}
//判断是否空栈
public bool STIsEmpty(StackType ST)
{
if (ST.top == 0)
{
return true;
}
return false;
}
//判断是否满栈
public bool STIsFull(StackType ST)
{
if (ST.top == MAXLEN)
{
return true;
}
return false;
}
//清空
public void STCLent(StackType ST)
{
ST.top = 0;
}
//释放栈
public void STFree(StackType ST)
{
if (ST != null)
{
ST = null;
}
}
//入栈
public int PushST(StackType ST, Data data)
{
if (ST.top >= MAXLEN)
{
Console.WriteLine("栈满");
return 0;
}
ST.top++;
ST.data[ST.top] = data;
return 1;
}
//出栈
public Data PooST(StackType ST)
{
if (ST.top == 0)
{
Console.WriteLine("栈空");
return null;
}
ST.top--;
return ST.data[ST.top];
}
}