package search;

import java.util.Iterator;

public class Bag<Integer> implements Iterable<Integer> {

	private Node first; //pointer to head of linked list
	
	private class Node{
		Integer item;
		Node next;
	}
	
	/**
	 * Adds new node to linked list
	 * @param item the item to be added to the linked list
	 */
	public void add(Integer item){
		Node oldfirst = first;
		first = new Node();
		first.item = item;
		first.next = oldfirst;
	}
	
	@Override
	public Iterator<Integer> iterator() {
		return new ListIterator();
	}
	
	private class ListIterator implements Iterator<Integer>{
		
		private Node current = first;
		
		public boolean hasNext(){
			return current != null;
		}
		public void remove(){
			current.next = current.next.next;
		}
		public Integer next(){
			
			Integer item = current.item;
			current = current.next;
			return item;
			
		}
	}

	

	

}