关于栈
栈(Stack)是限定只能在一段进行插入和删除操作的线性表。
进行插入和删除操作的一端称为“栈顶”(top),另一端称为“栈底”(bottom)。
栈的插入操作称为“入栈”(push),栈的删除 操作称为“出栈”(pop)。
栈具有后进先出(LIFO),先进后出(FILO)的特性。
Java Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
除了由Vector定义的所有方法,自己也定义了一些方法:
package com.lsw.datastruct; public class StackTest { static class MyStack{ int top; //底层实现是一个数组 int stack[]; public MyStack(){ top = -1; stack = new int[10]; } public MyStack(int num){ top = -1; //初始化的时候无任何数据 stack = new int[num]; } //出栈 public int pop(){ return stack[top--]; } //入栈 public void push(int value){ stack[++top] = value; } Boolean myIsEmpty(){ if(top == -1) return true; else return false; } //取栈顶元素 public int mypeek(){ int peek = stack[top]; return peek; } public Boolean isFull(){ return top == stack.length - 1; } int mysize(){ return top + 1; } } public static void main(String[] args){ MyStack mystack = new MyStack(5); mystack.push(1); mystack.push(222); mystack.push(31); mystack.push(41); mystack.push(4); System.out.println(mystack.isFull()); System.out.println(mystack.myIsEmpty()); System.out.println(mystack.mysize() + " " +mystack.top); for(int i=mystack.top;i>=0;i--) { int value=mystack.mypeek(); mystack.pop(); System.out.println(value); } System.out.println(mystack.top); } }