Newer
Older
Assignment2B / src / List.java
public class List<T> implements IList<T> {

	private class Node {
		private T item;
		private Node next;
		
		public Node(T item, Node next) {
			this.item = item;
			this.next = next;
		}
		
		public Node(T item) {
			this.item = item;
			this.next = null;
		}
	}
	
	private Node root;
	
	public void addAt(int pos, T elem) {
		if (root == null) {
			root = new Node(elem);
		} else if (pos == 0) {
			root = new Node(elem, root);
		} else if (pos > 0) {
			Node walker = root;
			Node prev = null;
			
			while (walker != null && pos > 0) {
				pos--;
				prev = walker;
				walker = walker.next;
			}
			
			walker = new Node(elem, walker);
			prev.next = walker;			
		}
	}
	
	public boolean removeAt(int pos) {
		return false;
	}
	
	public int find(T elem) {
		int returnValue = 0;
		
		Node walker = root;
		while (walker != null && walker.item != elem) {
			walker = walker.next;
			returnValue++;
		}
		
		if (walker == null) {
			returnValue = -1;
		}
		
		
		return returnValue;
	}
	
	public int size() {
		int returnValue = 0;
		Node walker = root;
		while (walker != null) {
			walker = walker.next;
			returnValue++;
		}
		return returnValue;
	}
	
	public void clear() {
		
	}
	
	public void append(IList<T> aList) {
		
	}
	
	public String[] getAllElementsAsStrings() {
		int size = size();
		String[] list = new String[size];
		
		Node walker = root;
		for (int i = 0; i < size; ++i) {
			list[i] = (String)walker.item;
			walker = walker.next;
		}
		
		return list;
	}
}