官方语言

栈是一个后进先出的线性表,它的要求只在表尾进行删除和插入。

通俗的讲 有三个基本信息

栈的元素必须 ”先进后出“

栈的操作只能在线性表的表尾进行

对栈来说 表尾就是栈顶,表头就是栈底。

栈的操作:

从栈顶压栈push

出栈从栈顶出 pop

ios 的 nav导航控制 就是这样的。

栈的顺序存储结构

include

typedef struct

{

ElemType *base;

ElemType *top;

int stackSize;

}sqStack;

base是指向栈底的指针

top 是栈顶指针

stackSize是栈的最大容量

进栈与出栈(记事本写的代码,没有验证只提供思路)

入栈

define SATCKINCREMENT 10

Push(sqStac *s, ElemType e)

{ //这里是栈顶-栈底 ,超出了栈的大小,我们 动态增加它大小

if (s->top - s->base >= s->stackSize)

{

a->base = (ElemType *)realloc(s->base,(a->stackSize + SATCKINCREMENT )+sizeof(ElemTyp));

if (!s->base) exit(0);

s->top = s->base+s-> stackSize; //设置栈顶

s->stackSIze = s - >stacKsize + SATCKINCREMENT; // 记录栈的大小

}

*(s->top) = e;//设置参数

s->top++ //移动栈顶指针

}

出栈

Pop (sqStack *s,ElemType *e)

{

if (s->top == s->base) //栈已空空

return;

*e =*--(s->top) //ps 栈顶是没有东西的 ,是准备存东西的

}

清空栈

ClearStack(sqStack *s)

{

s->top = s->base

}

销毁栈

DestroyStack(sqStack *s)

{

int i , len;

len = s->stackSize;

for (i=0;i

free(s->base);

s->base++;

}

s->base = s->top = NULL;

s->stackSize = 0;

}

看我那么可爱n(≧▽≦)n

关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng

个人博客: www.liangtongzhuo.com

ios 个人写的app (同人音声)ASMR音乐

MindSea脑海:思维导图英语怎么说、好看图片与手绘简单全攻略
卡吧和cpu说的挤牙膏是什么意思