java代碼實現棧


1.棧的定義:

     棧作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照后進先出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最后一個數據被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為后進先出表。

2.java代碼實現棧

數組實現:

package test;

public class stack {

    private int maxSize;// 棧的大小
    private int top;
    private char[] arr;

    public stack(int size) {
        maxSize = size;
        top = -1;
        arr = new char[maxSize];
    }

    public void push(char value) { // 壓入數據

        arr[++top] = value;
    }

    public char pop() { // 彈出數據

        return arr[top--];
    }

    public char peek() { // 訪問棧頂元素

        return arr[top];
    }

    public boolean isFull() { // 棧是否滿了

        return maxSize - 1 == top;
    }

    public boolean isEmpty() { // 棧是否為空

        return top == -1;
    }

}

利用棧實現字符串的倒敘輸出

package test;

public class Reverse {
    String input;

    public Reverse(String input) {
        this.input = input;
    }

    public String doReverse() {
        stack s = new stack(input.length());
        for (int i = 0; i < input.length(); i++) {
            s.push(input.charAt(i));
        }
        String output = "";
    while(!s.isEmpty()){
            output += s.pop();
    }
        return output;

    }

}


測試:

@Test
    public void fun(){
        Reverse r=new Reverse("人國中是我");
        System.out.println(r.doReverse());
    }

鏈式實現:

package test;

import java.util.LinkedList;

public class stack1 {

    private LinkedList<Object> a = new LinkedList<Object>();

    public void push(Object o) {
        a.addFirst(o);

    }

    public Object pop() {
        return a.removeFirst();
    }

    public Object peek() {
        return a.getFirst();
    }

    public boolean empty() {

        return a.isEmpty();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM