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的組合來創建。
