栈ADT

栈是限制插入和删除都只能从一个位置上操作的表,该位置是表的末端,表的末端一般叫做栈顶,对栈的基本操作有push(进栈) 插入 和 pop(出栈)删除,前者相当于在表最后的位置上插入元素,后者相当于删除最后进入栈的元素,俗称也叫先进后出表,后进先出表,我们对栈的基本操作也就是 push和pop,一般栈的模型就是存在某个元素位于栈的顶部,并且该元素是唯一可见的元素,

由于栈是一个表,所以任何实现标的方法都可以实现栈,显然Arrylist和LinkedList都支持栈的操作,大多数的时候他们都是最合理的实现,偶尔设计一种特殊目的实现可能会更快 比如 如果被放到栈上的元素是基本类型 因为对栈的操作都是常数时间操作,因为就是添加和删除么 涉及到一些元素的移动,所以除非在非常特殊的环境下 这是不可能产生任何明显改进的,由于这些特殊的时机, 我们将给出两个流行的实现方法,一种方法使用链式结构,而另一种方法使用数组,二者均简化了 ArrayList和LinkendList中的逻辑,

栈的链表实现

  栈的第一种实现方式是使用单链表,通过在表的顶端插入元素 来实现push 通过在链表的顶部来删除元素来实现pop,top操作只是考察表顶端元素 并返回它的值,有时pop操作和top操作合二为一,

栈的数组实现

猜你喜欢

转载自www.cnblogs.com/ChenD/p/9065038.html
ADT