在学C语言数据结构 栈栈,我这个程序运行到*(S->top++) = e 就崩溃, 到底是为什么呀?(许多printf作调试用)

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
//栈的初始化,压栈出栈,清空栈等操作 //本质介于静态栈和动态栈之间的一种表示方法 s.top ++ ; //e存放进去后top指针上移,这时候base指针指向栈底,top指针指向下一个可存放的位置(即栈顶) e = *s.top; //因为若是非空的栈则他的s->top指向下一个可以存放数据的地址, //此时这个位置是空的他的下面才是最后一个有数据的 { //这是个虚假的清除栈,其实那些文件还是在的 //下次调用这个栈的时候新存入数据会把旧的覆盖掉 { //对比上面那个清理,这个才是销毁
}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表,通常称插入,删除的一段为栈顶(Top),叧一端为栈底(Botton)。当表中没有元素时称为空栈.

下面是C语言实现数据结构 栈中的顺序栈及基本算法

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

栈是一个有序线性表,只能在表的一端(称为栈顶top)执行插入和删除操作,最后插入的元素第一个被删除是一种后进先出(FILO)的线性表

  • int pop():出栈,删除并返回最后一个插入栈的元素
  • int top():返回最后一个插入栈的元素但不刪除。
  • int size():返回存储在栈中元素的个数

4.基于数组实现和基于链表实现的比较

  • 各个操作都是常数时间开销
  • 每隔一段时间倍增操作的开销较大
  • n個操作的任意序列的平摊时间开销为O(n)
  • 栈规模的增加和减小都很简洁
  • 各个操作都是常数时间开销
  • 每个操作都要使用额外的空间开销和时間开销来处理指针

栈的大小是固定的,当栈满了之后无法继续执行入栈操作

当预设数组大小满了之后将新建数组为原数组的两倍大小,嘫后将原数组复制到新数组里面

表头为栈顶在表头执行入栈和出栈操作

}

我要回帖

更多关于 数据结构 栈 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信