栈的顺序存储结构和操作实现 数组实现

来源:互联网 发布:战舰世界mac 国服切换 编辑:程序博客网 时间:2024/04/26 01:45

栈的顺序存储结构和操作实现

今天学习了一下栈,顺便自己敲代码实现栈的功能,本次是数组实现的。话不多说,看源代码:
定义接口:
package com.guobing.stack;@SuppressWarnings("hiding")public interface Stack_Interface<Object> {public void initStack();       //这个方法貌似可以不要,后面再看看public void push(Object obj);  //向栈顶插入一个元素public boolean isEmpty();      //判断是否为空public Object peek();          //返回栈顶元素的值public Object pop();           //从栈中删除栈顶元素并返回public void clear();           //清除栈中的所有元素使之成为一个空栈public void print();           //打印栈中的元素}
实现接口:
package com.guobing.stack;public class ArrayStack implements Stack_Interface<Object> {/** * 栈的顺序存储结构和操作实现    数组实现 */final int minSize = 10;         //定义栈需要的变量private Object [] stackArray;private int top;/** * 清空栈 */@Overridepublic void clear() { top = -1;stackArray = null;}/** * 初始化栈 */@Overridepublic void initStack() {top = -1;                              //栈的初始值为空,置top为1stackArray = new Object[minSize];   //数组初始长度}/** * 判断栈是否为空 */@Overridepublic boolean isEmpty() {return (top == -1);}/** * 返回栈顶元素的值 */@Overridepublic Object peek() {if(top == -1)return null;System.out.println("栈顶元素的值是:" + stackArray[top]);return stackArray[top];}/** * 从栈中删除栈顶元素并返回 */@Overridepublic Object pop() {if(top == -1)return null;top --;                            //这种写法比较高效return stackArray[top + 1];}/** * 用数组实现栈,其实很简单;top就是数组的最后一位 * 所有的操作都是对top的操作,所以虽然有栈底指针,但是没有用到,可以不申明 * 向栈顶压入数据时的分析: * 数组的长度是固定的。所以当栈空间已经满时,重新申请空间,并把数据复制过去 */@Overridepublic void push(Object obj) { if(top == stackArray.length - 1) {Object [] p = new Object[top * 2];for(int i=0; i<=top; i++) {p[i] = stackArray[i];stackArray = p;}}top ++;stackArray[top] = obj;}/** * 打印栈中的数据 */@Overridepublic void print() {if(top == -1) {System.out.println("栈为空");}for(int i=top; i>=0; i--) {System.out.println(stackArray[i]);} }//测试public static void main(String [] args) {ArrayStack as = new ArrayStack();as.initStack();as.push("a");as.push("b");as.push("c");as.peek();as.print();System.out.println("删除栈顶元素后:");as.pop();as.peek();as.print();as.clear();as.print();}}

测试结果:
栈顶元素的值是:ccba删除栈顶元素后:栈顶元素的值是:bba栈为空



0 0
原创粉丝点击