栈的顺序存储结构和操作实现 数组实现
来源:互联网 发布:战舰世界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
- 栈的顺序存储结构和操作实现 数组实现
- 栈的顺序存储结构和实现
- 集合顺序存储结构的实现和操作
- JAVA实现队列的顺序存储结构和操作
- 栈的顺序存储结构操作及实现
- 数组的顺序结构表示和实现
- 数组的顺序存储和实现
- 数组的顺序存储表示和实现
- 栈的顺序存储结构的实现
- 栈的顺序存储结构实现
- 线性结构--->栈的顺序存储实现
- 栈的顺序存储结构以及实现
- 栈的顺序存储结构及实现
- 线性表的顺序存储结构--用数组实现
- Java中栈的实现(1)-使用顺序存储结构(数组)以及实现
- 循环队列操作的实现-顺序存储结构
- C语言数据结构——数组顺序存储结构的实现和表示
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 根据select标签中option选项的变化动态更改表单元素
- 你已经知道的成功秘密:与优秀者同行
- 【DP】UVA 10003 Cutting Sticks 类似矩阵链乘
- Kinect sdk VC环境下配置
- uboot的作用及主要工作
- 栈的顺序存储结构和操作实现 数组实现
- Hdu 1106 排序 (atoi函数与 strtok函数的应用)
- Python演绎的精彩故事(二)
- Mac系统下的Cisco Jabber 9.2.1软件下载
- poj 1679 The Unique MST(次小生成树)
- Android详细的对话框AlertDialog.Builder使用方法
- cocos2d-x里的场景过渡效果
- 主从复制
- 时间管理领域的三八原则