【数据结构】栈的顺序存储结构及实现
本文转自:疯狂Java 突破程序员基本功的16课
顺序存储结构的栈简称为顺序栈,它利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素。栈底位置固定不变,它的栈顶元素可以直接通过顺序栈底层数组的数组元素arr[size-1]来访问。
1.进栈
对于顺序栈的进栈操作而言,只需将新的数据元素存入栈内,然后再让记录栈内元素个数的变量+1,程序即可再次通过arr[size-1]重新访问新的栈顶元素。
由于顺序栈底层通常采用数组来保存数组元素,因此可能出现的情况是:当程序试图让一个数据元素进栈时,底层数组已满,那么就必须扩充底层数组的长度来容纳新进栈的数据元素。
2.出栈
对于顺序栈的出栈操作而言,需要将栈顶元素弹出栈,程序要做两件事情:
(1) 让记录栈内元素个数的变量-1
(2) 释放数组对栈顶元素的引用
对于删除操作来说,只要让记录栈内元素个数的size减少1,程序即可通过arr[size-1]访问到新的栈顶元素。但不要忘记释放原来栈顶元素的数组引用,否则会引起内存泄露。
SequenceStack.java
package com.syc.crazejava.chapter10;public class SequenceStatckTest {/** * @param args */public static void main(String[] args) {SequenceStack<String> stack = new SequenceStack<String>();// 不断地入栈stack.push("aaa");stack.push("bbb");stack.push("ccc");stack.push("ddd");// 访问栈顶元素System.out.println("访问栈顶元素:"+stack.peek());// 弹出一个元素System.out.println("第一次弹出栈顶元素:"+stack.pop());// 再次弹出一个元素System.out.println("第二次弹出栈顶元素:"+stack.pop());System.out.println("两次pop之后的栈:"+stack);}}引用访问栈顶元素:ddd