stack java实现_Java实现Stack类

import java.util.Iterator;

import java.util.NoSuchElementException;

import java.util.Scanner;

public class Stack implements Iterable {

private int N;

private Node first;

private static class Node {

private Item item;

private Node next;

}

public Stack() {

first = null;

N = 0;

}

public boolean isEmpty() {

return first == null;

}

public int size() {

return N;

}

public void push(Item item) {

Node oldfirst = first;

first = new Node();

first.item = item;

first.next = oldfirst;

N ++;

}

public Item pop() {

if(isEmpty()) throw new NoSuchElementException("Stack underflow");

Item item = first.item;

first = first.next;

N --;

return item;

}

public Item peek() {

if(isEmpty()) throw new NoSuchElementException("Stack underflow");

return first.item;

}

public String toString() {

StringBuilder s = new StringBuilder();

for(Item item : this)

s.append(item + " ");

return s.toString();

}

public Iterator iterator() {

return new ListIterator(first);

}

private class ListIterator implements Iterator {

private Node current;

public ListIterator(Node first) {

current = first;

}

public boolean hasNext() { return current != null; }

public void remove() { throw new UnsupportedOperationException(); }

public Item next() {

if(!hasNext()) throw new NoSuchElementException();

Item item = current.item;

current = current.next;

return item;

}

}

public static void main(String[] args) {

Stack s = new Stack();

Scanner in = new Scanner(System.in);

while(in.hasNext()) {

String item = in.next();

if(!item.equals("-")) s.push(item);

else if(!s.isEmpty()) System.out.println(s.pop() + " ");

System.out.println("(" + s.size() + " left on stack)");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值