跳到主要内容

栈( Stack )是限制在表的一端进行插入和删除运算的线性表,是一种特殊的线性表。

在这种线性表的结构中,一端是封闭的,不允许进行插入与删除元素;另一端是开口的,允许插入与删除元素。允许插入与删除运算的一端称为栈顶,而不允许插入与删除运算的一端称为栈底。

栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”( First In Last Out , FILO )或 “后进先出”( Last In First Out , LIFO )的原则组织数据的,因此,栈也被称为“先进后出” 表或“后进先出”表。

进栈

  • 判断栈是否已满,若栈满( top=n+1),则进行溢出处理,返回函数值1;
  • 若栈未满,将栈顶指针加 l ( top 加1);
  • 将新元素 f 送入栈顶指针所指的位置,返回函数值0。

出栈

  • 判断栈是否为空,若栈空( top=-1),则进行下溢处理,返回函数值1;
  • 栈若不空,将栈顶元素赋给变量(栈顶元素若无需保留,可省略此步);
  • 将栈顶指针退 l ( top 减 l ),返回函数值0。

栈是使用最为广泛的数据结构之一,表达式求值、递归过程实现都是栈应用的典型例子。