一道数据结构栈的定义和特点问题,请问:为什么栈抽象数据类型定义中,是InitStack(&s),而代码中是

  • 栈(Stack):只允许在一端進行插入或删除的线性表
  • 栈顶(Top):线性表允许进行插入和删除的那一端。
  • 栈底(Bottom):固定的不允许进行插入和删除的另一端。
  • 空栈:不含任何元素的空表
  • 栈的操作特性为后进先出(LIFO)
  • 栈的数学性质:n个不同元素进栈,出栈元素不同排列的个数为\(\frac{1}{n+1}C^n_{2n}\)

  • 順序栈利用一组地址连续的存储单元存放自栈底到栈顶的数据元素同时附设一个指针(top)指示当前栈顶元素的位置。

  • 顺序栈的存储类型描述:

  • 进栈操作:栈未满时栈顶指针先加1,再赋值给栈顶元素

  • 出栈操作:栈非空时先取栈顶元素值,再将栈顶指针减1

  • 利用栈底位置相对不变的特性可让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端两个栈顶向共享空间的中间延伸。
  • 仅当两个栈顶指针相邻(top1-top0=1)时判断为栈满。
  • 当0号栈进栈时top0先加1再赋值1号栈进栈时top1先减1再赋值;出栈时则刚好相反。

我要回帖

更多关于 数据结构栈的定义和特点 的文章

 

随机推荐