/* * 泛型實現下推堆棧 */ public class LinkedStack<T> { /*堆棧節點*/ private static class Node<U> { U item; Node<U> next; Node() { //構造方法1 item = null; next = null; } Node(U item, Node<U> next) { //構造方法2 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) { //push操做 top = new Node<T>(item, top); } public T pop() { //pop操做 T result = top.item; if (!top.end()) { top = top.next; } return result; } /*main函數用於測試*/ public static void main(String[] args) { LinkedStack<String> lss = new LinkedStack<String>(); for (String s : "Phasers on stun!".split(" ")) lss.push(s); String s; while ((s = lss.pop()) != null) System.out.println(s); } }
stun!
on
Phasersjava
typedef struct stack { int data; struct stack*next; }stack; static stack* top; int is_empty() { return top==NULL; } void push(int a) { stack*p; p=(stack*)malloc(sizeof(stack)); p->data=a; p->next=top; top=p; } void pop() { stack* q; q=top; top=top->next; free(q); }