数据结构之栈
来源:互联网 发布:《唯有落花知》 编辑:程序博客网 时间:2024/06/05 19:33
栈也叫后进先出表,同样分为线性存储和链式存储两种不同的方式。
package org.stack.cn;public interface StackADT {/*** * 向栈顶插入一个元素 * @param obj 插入的元素 */void push(Object obj);/** * 栈顶删除一个元素 * @return */Object pop();/** * 返回栈顶元素的值 * @return */Object peek();/*** * 判断是否为空栈 是-->true * @return */boolean isEmpty();/*** * 清楚栈中的元素成为空栈 */void clear();}
package org.stack.cn;/** * 栈的顺序存储结构操作实现 * @author Administrator * */public class SequenceSatck implements StackADT {private final int maxSize=10;private Object[] stackArray;private int top;//定义数组中所保存的栈顶元素的下标位置public SequenceSatck() {// TODO Auto-generated constructor stubtop=-1; //栈的初始位置为空stackArray=new Object[maxSize]; }public SequenceSatck(int n){if(n<=0){System.out.println("s数组长度要大于0");}top=-1;stackArray=new Object[n];}@Overridepublic void push(Object obj) {// TODO Auto-generated method stubif(top==stackArray.length-1){Object[] p=new Object[top*2+2];for(int i=0;i<top;i++){p[i]=stackArray[i];//复制数组内容到新数组中stackArray=p;}}top++;stackArray[top]=obj;}@Overridepublic Object pop() {// TODO Auto-generated method stubif(top==-1){System.out.println("栈是空的");return null;}top--;return stackArray[top+1];}@Overridepublic Object peek() {// TODO Auto-generated method stubif(top==-1){System.out.println("栈是空的,无法读取元素");return null;}return stackArray[top];}@Overridepublic boolean isEmpty() {// TODO Auto-generated method stubreturn top==-1;}@Overridepublic void clear() {// TODO Auto-generated method stubtop=-1;}}
package org.stack.cn;/*** * 栈的链式存储结构 * @author Administrator * */public class LinkStack implements StackADT {private Node top; //定义top为栈顶指针的引用private class Node{private Object data;//数据域private Node next; //指针域 存储下一个节点的引用public Node(Node next){this.next=next;}public Node(Object obj,Node next){this.data=obj;this.next=next;}}public LinkStack() {// TODO Auto-generated constructor stubtop=null;}@Overridepublic void push(Object obj) {// TODO Auto-generated method stubtop=new Node(obj,top);}@Overridepublic Object pop() {// TODO Auto-generated method stubif(top==null){System.out.println("栈是空的");return null;}Object x=top.data;top=top.next;return x;}@Overridepublic Object peek() {// TODO Auto-generated method stubif(top==null){System.out.println("栈是空的");return null;}return top.data;}@Overridepublic boolean isEmpty() {// TODO Auto-generated method stubreturn top==null;}@Overridepublic void clear() {// TODO Auto-generated method stubtop=null;}}
0 0
- java数据结构之栈
- 数据结构之顺序栈
- 数据结构之链栈
- 数据结构之栈
- 数据结构复习之【栈】
- 数据结构之栈
- 数据结构之栈
- 数据结构之栈实现
- 数据结构学习之栈
- 数据结构之栈
- 数据结构之栈
- 复习数据结构之栈
- 数据结构之栈
- 数据结构之栈
- 大话数据结构之栈
- 数据结构之顺序栈
- 数据结构之链式栈
- 数据结构之顺序栈
- bat实现ftp上传
- sharedUserID的使用
- 静态内部类的使用场景
- LVTTL与LVCMOS区别
- javascript 原型继承介绍
- 数据结构之栈
- Maven与Ant之间的区别
- android之--为模拟器安装应用
- Axis2开发WebService客户端 的3种方式
- Java基础---异常,包
- Qt设置窗口背景透明
- Windows下开源打包框架NSIS学习(java打包可执行文件, java打包exe)
- 面试题精选
- Python面试题