用JAVA寫簡單的棧


package com.gailekesi.example.expl_tuple;

import javax.naming.NameNotFoundException;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.util.List;

/**
 * 和尚講故事
 * Created by Administrator on 2016/10/9.
 */
public class LinkedStack<T> {
    private static class Node<U>{
        U item;
        Node<U> next;
        Node(){item=null;next=null;}

        Node(U item,Node<U> next){
            this.item = item;
            this.next = next;
        }
        boolean end(){return item==null&&next==null;}
    }
    private Node<T> top = new Node<T>();

    public void push(T item){
        top = new Node<T>(item,top);
    }
    public T pop(){
        T result = top.item;
        if (!top.end()) {
           top= top.next;

        }
        return result;
    }

    public static void main(String[] args) {

        List l = new ArrayList();
        LinkedStack<String> lss = new LinkedStack<String>();
        for (String s:"a b c d e".split(" ")
             ) {
            lss.push(s);

        }
        String s;
        while ((s=lss.pop())!=null){
            System.out.println(s);
        }
    }

}

 這是一個簡單的堆棧,用java代碼寫的,利用泛型控制類型,有點遞歸的感覺吧,end()方法相當於末端哨兵,當讀取到末端時,哨兵報警,停止讀取。

類的item相當於頭,next相當於尾部。pop()方法負責拉出數據,push()方法負責推入數據。

其實linkedList本身已經具備了創建堆棧所必須的方法,而stack可以通過兩個泛型的類Stack可以通過兩個泛型的類stack和linkedlist的組合來創建。

 


免責聲明!

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



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