基于java实现的stack
package com.test.stack; import java.util.Iterator; public class StackDemoimplements Iterable{ private Node head; private int N; public static void main(String[] args) { StackDemo stackDemo = new StackDemo<>(); stackDemo.push("a"); stackDemo.push("b"); stackDemo.push("c"); stackDemo.push("d"); for (Object item : stackDemo) { System.out.println(item); } System.out.println("----------------"); System.out.println(stackDemo.pop()); System.out.println("----------------------"); for (Object item : stackDemo) { System.out.println(item); } } public StackDemo(){ head = new Node(null,null); N = 0; } //栈是否为空 public boolean isEmpty(){ return N == 0; } //数据压入栈 public void push(T item){ Node oldNode = head.next; Node newNode = new Node(item,oldNode); head.next = newNode; N++; } //弹出栈顶数据 public T pop(){ Node oldNode = head.next; Node oldNodeNext = oldNode.next; head.next = oldNodeNext; N--; return oldNode.item; } //获取栈的长度 public int size(){ return N; } //内部类,实现遍历 private class SIterator implements Iterator { private Node n = head; @Override public boolean hasNext() { return n.next!=null; } @Override public T next() { Node node = n.next; n = n.next; return node.item; } } @Override public Iterator iterator() { return new SIterator(); } private class Node{ public T item; public Node next; public Node(T item,Node next){ this.item = item; this.next = next; } } }



