Java实现简单的栈

来源:互联网 发布:it狂人 360云盘 编辑:程序博客网 时间:2024/06/06 16:33

栈的定义  

     栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。  
    (1)通常称插入、删除的这一端为栈顶 (Top),另一端称为栈底 (Bottom)。  
    (2)当表中没有元素时称为空栈。  
    (3)栈为后进先出(Last In First Out)的线性表,简称为 LIFO 表。  
     栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中" 
最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部, 
要到最后才能删除。 

放上网上找的一张图更为清晰。



在Java我用数组去实现了栈这一线性表的数据结构


package com.gaorui.Stack;/** * Java实现栈 * @author JavaGR_ais * */public class Stack {private Object stack[];//定义类型为Object的数组来保存进栈的数组private int maxsize;//定义栈的大小private int top;//定义栈顶的位置游标
<span style="white-space:pre"></span>//初始化栈对象,因为我这里用数组模拟的,数组长度必须指定,所以必须确定栈的大小public Stack(int maxsize) {this.maxsize = maxsize;stack = new Object[maxsize];//初始化数组top = -1;//因为现在没有数据压入栈,所以让栈顶的游标为0}
<span style="white-space:pre"></span>//获取栈的大小,即栈顶元素的游标+1public int getStackSize() {if (top == -1) {return 0;}return top + 1;}public int getSize() {return maxsize;}
<span style="white-space:pre"></span>//数据进栈public void push(Object data) {stack[++top] = data;//这里注意是前++,保证top值在这条语句执行完之前+1}<span style="white-space:pre"></span>
<span style="white-space:pre"></span>//数据出栈public Object pop() {<span style="white-space:pre"></span>
<span style="white-space:pre"></span>//没有数据在栈里,返回nullif (top == -1) {return "null";}<span style="white-space:pre"></span>//有数据返回栈顶元素,栈顶游标top -1return stack[top--];}public Object peek() {if(top==-1){return "null";}return stack[top--];}public static void main(String[] args) throws Exception {Stack stack = new Stack(1000);stack.push(new String("1"));stack.push(new String("2"));stack.push(new String("3"));System.out.println(stack.getStackSize() + "Stack");stack.push(new String("4"));stack.push(new String("5"));stack.push(new String("嘻嘻"));// System.out.println(stack.peek());System.out.println(stack.peek());/*while (stack.top >= 0) {System.out.println(stack.pop());}*/}}



0 0
原创粉丝点击