Bag的实现

来源:互联网 发布:nginx检查配置文件 编辑:程序博客网 时间:2024/06/08 14:01
//Bag的实现package Algorithms;import java.util.Iterator;import java.util.NoSuchElementException;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class P98_Bag<Item> implements Iterable<Item> {private Node<Item> first;   //链表的首结点private int n;private static class Node<Item>{//定义了结点的嵌套类private Item item;private Node<Item> next;}public P98_Bag(){first = null;n = 0;}public boolean isEmprty(){return first == null;}public int size(){return n;}public void add(Item item){//和stack的push()方法完全相同Node<Item> oldfirst = first;first = new Node<Item>();first.item = item;first.next = oldfirst;n++;}public Iterator<Item> iterator(){return new ListIterator<Item>(first);}private class ListIterator<Item> implements Iterator<Item>{private Node<Item> current;public ListIterator(Node<Item> first){current = first;}@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn current != null;}@Overridepublic Item next() {// TODO Auto-generated method stubif (!hasNext()){throw new NoSuchElementException();}Item item = current.item;current = current.next;return item;}@Overridepublic void remove() {// TODO Auto-generated method stubthrow new UnsupportedOperationException();}}public static void main(String[] args) {// TODO Auto-generated method stubP98_Bag<String> bag = new P98_Bag<String>();while (!StdIn.isEmpty()){String item = StdIn.readString();bag.add(item);}StdOut.println("size of bag = " + bag.size());        for (String s : bag) {            StdOut.println(s);        }}}

0 0