栈的逆置
題目:
給定一個棧,只使用棧的操作(pop和push),實現棧的逆置。
算法:
1、利用遞歸函數reserveStack(),pop棧頂元素,直至棧空。
2、每次遞歸向上一步驟時,利用insertStaBot遞歸函數,將上一步中出棧的元素插入棧底。
import java.util.Arrays;public class ArrayStack {private int top;private int capacity;private int[] array;public ArrayStack(int capacity) {this.top = -1;this.capacity = capacity;this.array = new int[capacity];}public boolean isEmpty(){return (top==-1);}public boolean isFull(){return (top==capacity-1);}public void push(int data){if(this.isFull()){this.DoubleStack();}array[++top] = data;}public int pop(){if(this.isEmpty()){System.out.println("the Stack is empty");return -1;}else {return array[top--];}}public void reverseStack(ArrayStack stack){if(stack.isEmpty()){return;}int temp = stack.pop();reverseStack(stack);insertStaBot(stack,temp);}public void insertStaBot(ArrayStack stack,int data){if(stack.isEmpty()){stack.push(data);return;}int temp = stack.pop();insertStaBot(stack,data);stack.push(temp);}public void deleteStack(){top = -1;}@Overridepublic String toString() {StringBuilder st = new StringBuilder();for(int i=0;i<array.length;i++){st.append(array[i]+" ");}return st.toString();}
}
class test1 {public static void main(String[] args) {ArrayStack stack = new ArrayStack(10);for(int i =0;i<10;i++){stack.push(i);}System.out.println("逆置之前:"+stack.toString());stack.reverseStack(stack);System.out.println("逆置之后:"stack.toString());}
}
運行結果:
運行結果:
總結
- 上一篇: js两种解码方式
- 下一篇: CentOS7升级MariaDB 10.