栈 (出pop 进push)(销毁,清空)

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

通俗的讲 有三个基本信息

  • 栈的元素必须 ”先进后出“
  • 栈的操作只能在线性表的表尾进行
  • 对栈来说 表尾就是栈顶,表头就是栈底。

栈的操作:

  • 从栈顶压栈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;ibase);
 s->base++;
}
s->base = s->top = NULL;
s->stackSize = 0;
}
  • ######看我那么可爱n(≧▽≦)n
  • 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
  • 个人博客: www.liangtongzhuo.com
  • ios 个人写的app (同人音声)ASMR音乐

转载于:https://juejin.im/post/5a31f144f265da43062ac7dd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值