public class LinkedStack<T> { private static class Node<U>{ U item; Node<U>next; Node(){ item=null; next=null; } Node(U u,Node<U>node){ item=u; next=node; } 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) { LinkedStack<String> ls=new LinkedStack<String>(); for(String s:"this is code test!!".split(" ")){ ls.push(s); } String s; while ((s=ls.pop())!=null){ System.out.println(s); } } }