All pastes #1964733 Raw Edit

Unnamed

public java v1 · immutable
#1964733 ·published 2010-10-17 10:32 UTC
rendered paste body
package adts;import java.util.Vector;public class LinkedList implements ListInterface {    private class Node    {		private Object data;	// entry in the list		private Node next;		private Node previous;// link to next node				private Node(Object dataPortion)		{			data = dataPortion;			next = null;		}				private Node(Object dataPortion, Node nextNode)		{			data = dataPortion;			next = nextNode;		}	}			private Node firstNode; // reference to the first node	private Node lastNode ;	private int length;     // current num entries in list	public LinkedList()	{		clear();	}	public boolean add(Object newEntry) 	{		Node newNode = new Node(newEntry);				if(isEmpty())		{			firstNode = newNode;		}		else		{			Node lastNode = getNodeAt(length);			lastNode.next = newNode; // make last node reference new node		}		length++;		return true;	}	public boolean addAtTail(Object newEntry) 	{		Node newNode = new Node(newEntry);				if(isEmpty())		{			firstNode = lastNode = newNode;		}		else		{			//Node lastNode = getNodeAt(length);			lastNode.next = newNode; 		}		length++;		return true;	}				private Node getNodeAt(int givenPosition)	{		Node currentNode = firstNode;				for(int i=1;i<givenPosition;i++)		{			currentNode = currentNode.next;		}		return currentNode;	} // end getNodeAt			public boolean add(int newPosition, Object newEntry) 	{		boolean isSuccessful = true;				if((newPosition >=1) && (newPosition<=length+1))		{			Node newNode = new Node(newEntry);						/* Case 1: Adding to the start of the list */			if(isEmpty() || (newPosition == 1))			{				newNode.next = firstNode;				firstNode = newNode;			}			/* Case 2: newPosition > 1, list not empty */			else			{				Node nodeBefore = getNodeAt(newPosition-1);				Node nodeAfter = nodeBefore.next;				newNode.next = nodeAfter;				nodeBefore.next = newNode;			}			length++;		}		else		{			isSuccessful = false;		}		return isSuccessful;	}	public void clear() {		firstNode = null;		length = 0;	} // end clear	public boolean contains(Object anEntry) {		boolean result = false;		if (!isEmpty() && (anEntry != null) ) {			for (Node current = firstNode; current != null ; 				current = current.next) {				if (current.data.equals(anEntry))					return true ;			}		}		return result ;	}	public void display() {		// TODO Auto-generated method stub	}	public Object getEntry(int givenPosition) {		Object result = null ;		if (!isEmpty() && (givenPosition <= length) ) {			result = getNodeAt(givenPosition).data;		}		return result ;	}	public int getLength() {		return length;	}	public boolean isEmpty() {		return length == 0;	}	public boolean isFull() {		return false;	}	public Object remove(int givenPosition) {		Node result = null; // return object				if((givenPosition >= 1) && (givenPosition <= length)){			Node before = getNodeAt(givenPosition-1); // get entry to be removed.			result = before.next ;			before.next = before.next.next ;			length--;		}		return result;	}	public boolean remove(Object objectToRemove) {		boolean result = false ;		if (!isEmpty()) {			for (Node current = firstNode, previous = null; current != null ;					previous = current, current = current.next) {				if (current.data.equals(objectToRemove)) {					result = true ;					if (current == firstNode) {						firstNode = current.next ;					} else {						previous.next = current.next ;						}					length-- ;				}			}		}		return result;	}	public boolean replace(int givenPosition, Object newEntry) {		boolean result = false;		if((givenPosition >=1) && (givenPosition <= length)){			Node node = getNodeAt(givenPosition);			node.data = newEntry ;			result = true ;		}		return result;	}		public boolean add()	{		return true;	}		public boolean swap(Object one, Object two)	{		boolean result = true;		Node temp1 = new Node(one);		Node temp2 = new Node(two);		if(contains(one) && contains(two))		{			for (Node current = firstNode, previous = null; current != null ;previous = current, current = current.next)			{				if(current.data.equals(one))				{					temp1 = previous.next;					temp1.next = current.next;					temp1.previous = current;				}				if(current.data.equals(two))				{					temp2 = previous.next;					temp2.next = current.next;					temp2.previous = current;				}			}			for (Node current = firstNode, previous = null; current != null;previous = current, current = current.next)			{				if(current.data.equals(one))				{					previous.next = temp2;					current.next = temp2.next;				}				if(current.data.equals(two))				{					previous.next = temp1;					current.next = temp2.next;				} 			}			return result;		}		else		{			return false;		}	}		public Vector getRange(int pos1,int pos2)	{		Vector v = null;		return v;	}			public boolean addGroup(Vector objects, int start)	{		boolean result = true;		return result;	}		public int getPos(Object o)	{		Node temp = firstNode;		int pos = 1;		boolean result = false;		while(!result)		{			if(temp.data.equals(o))			{				result = true;			}			else			{				temp = temp.next;				pos++;			}		}		return pos;	}}