常用的数据结构之栈

  数据结构是一种特殊的组织和存储数据的方式,使我们可以更高效的对存储的数据执行操作。以下介绍常用的数据结构中的栈。

  栈是限定仅在表尾进行插入或删除操作的线性表。表尾成为栈顶,表头成为栈底。不含元素的空表成为空栈。栈的修改是按先进先出的原则。顺序栈、链栈

  • 栈的操作
    • 进栈 push:在栈顶插入一个元素。
    • 出栈 pop:在栈顶删除一个元素。          

 

 

 

  • 栈的附加功能:
    • Peep 窥视:返回堆栈的栈顶元素(不删除)
    • isEmpty:检查堆栈是否为空。
    • isFull:检查堆栈是否已经满了。 
  • 栈的存储表示方法:
    • 顺序栈:利用顺序存储结构实现的栈(①利用一组地址连续的存储单元一次存放从栈底到栈顶的数据元素;②附设指针top指向栈顶元素的位置,base指针指向栈底元素位置;③采用动态分配原则)  
      • 初始化:为顺序栈分配一个数组空间(stacksize,栈的最大容量),base和top同时指向栈底,表示空栈。
      • 入栈:判断栈是否已满,满则报错,否则将元素压入栈顶,top加一。
      • 出栈:判断栈是否为空,空则报错,否则将top减一,栈元素出栈。  
    • 链栈:采用链式存储结构实现的栈,通常用单链表表示(无头节点)。 
      • 初始化:构造一个空栈,无头结点,将栈顶指针置为空。
      • 入栈:为新的栈顶元素分配结点空间,将新结点插入到栈顶,修改栈顶指针。 
      • 出栈:判断栈是否为空,空则报错,否则取栈顶元素,修改栈顶指针,释放原栈顶元素空间。
    • 顺序栈与链栈的优缺点:
      • 顺序栈受到最大空间容量的限制,在满员时扩容工作量较大,在无法估计栈可能达到的最大容量时应使用链栈。   
  • 栈的应用:
    • 表达式评估。
    • 递归编程中实现函数调用。       
posted @ 2020-12-18 19:50  smallzhen  阅读(331)  评论(0编辑  收藏  举报