package com.arithmetic;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* 背包
* 是一种不支持删除元素的集合数据类型。
* 它的目的是帮助我们收集元素和迭代所有元素
*/
public class 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 Bag() {
first = null;
n = 0;
}
// 加入一个元素
void add(Item item) {
Node<Item> oldFirst = first;
first = new Node<Item>();
first.item = item;
first.next = oldFirst;
n++;
}
boolean isEmpty() {
return first == null;
}
int size() {
return n;
}
@Override
public Iterator<Item> iterator() {
return new ListIterator<Item>(first);
}
private static class ListIterator<Item> implements Iterator<Item> {
private Node<Item> current;
public ListIterator(Node<Item> first) {
current = first;
}
@Override
public boolean hasNext() {
return current != null;
}
@Override
public Item next() {
if (!hasNext()) throw new NoSuchElementException();
Item item = current.item;
current = current.next;
return item;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
public static void main(String[] args) {
Bag<String> bag = new Bag<String>();
bag.add("1");
bag.add("2");
bag.add("3");
Iterator<String> iterator = bag.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Bag 背包 链表实现
猜你喜欢
转载自blog.csdn.net/qq_34579060/article/details/84991474
今日推荐
周排行