P: 28
|
I need a help with the program to test the insertion, deletion, search, copyList, and the copy constructor operations for an object in the class UnorderedLinkedList.
These are my classes: - public class UnorderedLinkedList extends LinkedListClass
-
{
-
-
public UnorderedLinkedList()
-
{
-
super();
-
}
-
-
public UnorderedLinkedList(UnorderedLinkedList otherList)
-
{
-
super(otherList);
-
}
-
-
//Method to determine whether searchItem is in
-
//the list.
-
//Postcondition: Returns true if searchItem is found
-
// in the list; false otherwise.
-
public boolean search(DataElement searchItem)
-
{
-
LinkedListNode current; //variable to traverse the list
-
boolean found;
-
-
current = first; //set current to point to the first
-
//node in the list
-
-
found = false; //set found to false
-
-
while(current != null && !found) //search the list
-
if(current.info.equals(searchItem)) //item is found
-
found = true;
-
else
-
current = current.link; //make current point to
-
//the next node
-
return found;
-
}
-
-
-
//Method to delete deleteItem from the list.
-
//Postcondition: If found, the node containing
-
// deleteItem is deleted from the
-
// list. Also first points to the first
-
// node, last points to the last
-
// node of the updated list, and count
-
// is decremented by 1.
-
public void deleteNode(DataElement deleteItem)
-
{
-
LinkedListNode current; //variable to traverse the list
-
LinkedListNode trailCurrent; //variable just before current
-
boolean found;
-
-
if(first == null) //Case 1; the list is empty
-
System.err.println("Cannot delete from an empty list.");
-
else
-
{
-
if(first.info.equals(deleteItem)) //Case 2
-
{
-
first = first.link;
-
-
if(first == null) //the list had only one node
-
last = null;
-
count--;
-
}
-
else //search the list for the node with the given info
-
{
-
found = false;
-
trailCurrent = first; //set trailCurrent to point to
-
//the first node
-
current = first.link; //set current to point to the
-
//second node
-
-
while(current != null && !found)
-
{
-
if(current.info.equals(deleteItem))
-
found = true;
-
else
-
{
-
trailCurrent = current;
-
current = current.link;
-
}
-
}//end while
-
-
if(found) //Case 3; if found, delete the node
-
{
-
count--;
-
trailCurrent.link = current.link;
-
-
if(last == current) //node to be deleted was
-
//the last node
-
last = trailCurrent; //update the value of last
-
}
-
else
-
System.out.println("Item to be deleted is "
-
+ "not in the list.");
-
}//end else
-
}//end else
-
}//end deleteNode
-
}
- public abstract class LinkedListClass
-
{
-
protected class LinkedListNode
-
{
-
DataElement info;
-
LinkedListNode link;
-
}
-
-
protected LinkedListNode first; //variable to store the
-
//address of the first
-
//node of the list
-
protected LinkedListNode last; //variable to store the
-
//address of the last
-
//node of the list
-
protected int count; //variable to store the number of nodes
-
//in the list
-
-
-
//default constructor
-
//Initializes the list to an empty state.
-
//Postcondition: first = null, last = null,
-
// count = 0
-
public LinkedListClass()
-
{
-
first = null;
-
last = null;
-
count = 0;
-
}
-
-
//Method to determine whether the list is empty.
-
//Postcondition: Returns true if the list is empty;
-
// false otherwise.
-
public boolean isEmptyList()
-
{
-
return (first == null);
-
}
-
-
//Method to initialize the list to an empty state.
-
//Postcondition: first = null, last = null,
-
// count = 0
-
public void initializeList()
-
{
-
first = null;
-
last = null;
-
count = 0;
-
}
-
-
//Method to output the data contained in each node.
-
public void print()
-
{
-
LinkedListNode current; //variable to traverse the list
-
-
current = first; //set current so that it points to
-
//the first node
-
while(current != null) //while more data to print
-
{
-
System.out.print(current.info + " ");
-
current = current.link;
-
}
-
}//end print
-
-
//Method to return the number of nodes in the list.
-
//Postcondition: The value of count is returned.
-
public int length()
-
{
-
return count;
-
}
-
-
-
//Method to return a reference of the object containing
-
//the data of the first node of the list.
-
//Precondition: The list must exist and must not be empty.
-
//Postcondition: The reference of the object that
-
// contains the info of the first node
-
// is returned.
-
public DataElement front()
-
{
-
DataElement temp = first.info.getCopy();
-
return temp;
-
}
-
-
//Method to return a reference of object containing
-
//the data of the last node of the list.
-
//Precondition: The list must exist and must not be empty.
-
//Postcondition: The reference of the object that
-
// contains the info of the last node
-
// is returned.
-
public DataElement back()
-
{
-
DataElement temp = last.info.getCopy();
-
return temp;
-
}
-
-
//Method to determine whether searchItem is in the list.
-
//Postcondition: Returns true if searchItem is found
-
// in the list; false otherwise.
-
public abstract boolean search(DataElement searchItem);
-
-
-
//Method to insert newItem in the list.
-
//Postcondition: first points to the new list
-
// and newItem is inserted at the
-
// beginning of the list. Also,
-
// last points to the last node and
-
// count is incremented by 1.
-
public void insertFirst(DataElement newItem)
-
{
-
LinkedListNode newNode; //variable to create the
-
//new node
-
-
newNode = new LinkedListNode(); //create the new node
-
newNode.info = newItem.getCopy(); //assign a copy of
-
//newItem to the node
-
newNode.link = first; //insert newNode before first
-
first = newNode; //make first point to the
-
//actual first node
-
-
if(last == null) //if the list was empty, newNode is
-
//also the last node in the list
-
last = newNode;
-
-
count++;
-
}
-
-
//Method to insert newItem at the end of the list.
-
//Postcondition: first points to the new list and
-
// newItem is inserted at the end
-
// of the list. Also, last points to
-
// the last node and
-
// count is incremented by 1.
-
public void insertLast(DataElement newItem)
-
{
-
LinkedListNode newNode; //variable to create the new node
-
-
newNode = new LinkedListNode(); //create the new node
-
newNode.info = newItem.getCopy(); //assign a copy of
-
//newItem to the node
-
newNode.link = null; //set the link field of
-
//newNode to null
-
-
if(first == null) //if the list is empty, newNode is
-
//both the first and last node
-
{
-
first = newNode;
-
last = newNode;
-
}
-
else //if the list is not empty, insert newNode after last
-
{
-
last.link = newNode; //insert newNode after last
-
last = newNode; //set last to point to the actual last node
-
}
-
-
count++;
-
}//end insertLast
-
-
-
-
//Method to delete deleteItem from the list.
-
//Postcondition: If found, the node containing
-
// deleteItem is deleted from the
-
// list. Also first points to the first
-
// node, last points to the last
-
// node of the updated list, and count
-
// is decremented by 1.
-
public abstract void deleteNode(DataElement deleteItem);
-
-
//Method to return a reference of the copy of otherList.
-
private void copy(LinkedListClass otherList)
-
{
-
LinkedListNode newNode; //variable to create a node
-
LinkedListNode current; //variable to traverse the list
-
-
first = null; //make this list empty
-
-
if(otherList.first == null) //otherList is empty
-
{
-
first = null;
-
last = null;
-
count = 0;
-
}
-
else
-
{
-
count = otherList.count;
-
current = otherList.first; //current points to the
-
//list to be copied
-
-
//copy the first element
-
first = new LinkedListNode(); //create the node
-
first.info = current.info.getCopy(); //copy the info
-
first.link = null; //set the link field of
-
//the node to null
-
last = first; //make last point to the first node
-
current = current.link; //make current point to the next
-
//node of the list being copied
-
-
//copy the remaining list
-
while(current != null)
-
{
-
newNode = new LinkedListNode();
-
newNode.info = current.info.getCopy();
-
newNode.link = null;
-
last.link = newNode;
-
last = newNode;
-
current = current.link;
-
}//end while
-
}//end else
-
}//end copy
-
-
-
//Method to return a reference of the copy of otherList.
-
public void copyList(LinkedListClass otherList)
-
{
-
if(this != otherList) //avoid self-copy
-
copy(otherList);
-
}
-
-
//copy constructor
-
public LinkedListClass(LinkedListClass otherList)
-
{
-
copy(otherList);
-
}//end copy constructor
-
}
- import java.io.*;
-
import java.util.*;
-
-
public class TestProgUnorderedLinkedList
-
{
-
static BufferedReader keyboard = new
-
BufferedReader(new InputStreamReader(System.in));
-
-
public static void main(String[] args) throws IOException
-
{
-
UnorderedLinkedList list
-
= new UnorderedLinkedList();
-
UnorderedLinkedList tempList =
-
new UnorderedLinkedList();
-
IntElement num = new IntElement();
-
-
StringTokenizer tokenizer;
-
-
int position;
-
-
System.out.print(" Enter 8 integers on the " + "same line: ");
-
System.out.flush();
-
-
tokenizer = new
-
StringTokenizer(keyboard.readLine());
-
-
num.setNum(Integer.parseInt(tokenizer.nextToken()) );
-
-
while (tokenizer.hasMoreTokens())
-
{
-
num.setNum(Integer.parseInt(tokenizer.nextToken()) );
-
list.insertLast(num);
-
}
-
-
System.out.println();
-
System.out.print("The list you " + "entered is: ");
-
list.print();
-
System.out.println();
-
System.out.println("Length of list: " + list.length());
-
-
tempList.copyList(list);
-
-
System.out.print("Enter the num to " + "be deleted: ");
-
System.out.flush();
-
num.setNum(Integer.parseInt(keyboard.readLine()));
-
System.out.println();
-
-
tempList.deleteNode(num);
-
System.out.println("After deleting " + num + " the node, tempList:");
-
tempList.print();
-
System.out.println();
-
System.out.println("Length of list: " + tempList.length());
-
-
System.out.print("Enter the search " + "item: ");
-
System.out.flush();
-
-
num.setNum(Integer.parseInt(keyboard.readLine()));
-
System.out.println();
-
-
if(tempList.search(num) != -1)
-
System.out.println("Item found in " + "the list");
-
else
-
System.out.println("Item not found");
-
-
System.out.print("The list temp: ");
-
tempList.print();
-
System.out.println();
-
System.out.println("Length of list: " + tempList.length());
-
}
-
}
| |
Share this Question
10K+
P: 13,264
|
Please keep your posts in one thread.
Where in your classes do you need help?
Have you tried the advice that was given to you earlier?
| |
P: 28
|
Please keep your posts in one thread.
Where in your classes do you need help?
Have you tried the advice that was given to you earlier?
In the main program
| | 10K+
P: 13,264
|
In the main program
Where is the code for the other 2 classes DataElement and IntElement?
What makes us sure that help given now will not be ignored like all the help given before?
| |
P: 28
| - public abstract class DataElement
-
{
-
public abstract boolean equals(DataElement otherElement);
-
//Method to determine whether two objects contain the
-
//same data.
-
//Postcondition: Returns true if this object contains the
-
// same data as the object otherElement;
-
// otherwise, it returns false.
-
-
public abstract int compareTo(DataElement otherElement);
-
//Method to compare two objects.
-
//Postcondition: Returns a value < 0 if this object is
-
// less than the object otherElement;
-
// Returns 0 if this object is the same as
-
// the object otherElement.
-
// Returns a value > 0 if this object is
-
// greater than the object otherElement.
-
-
public abstract void makeCopy(DataElement otherElement);
-
//Method to copy otherElement into this object.
-
//Postcondition: The data of otherElement is copied into
-
// this object.
-
-
public abstract DataElement getCopy();
-
//Method to return a copy of this object.
-
//Postcondition: A copy of this object is created and
-
// a reference of the copy is returned.
-
}
-
-
-
-
public class IntElement extends DataElement
-
{
-
protected int num;
-
-
//default constructor
-
public IntElement()
-
{
-
num = 0;
-
}
-
-
//constructor with a parameter
-
public IntElement(int x)
-
{
-
num = x;
-
}
-
//copy constructor
-
public IntElement(IntElement otherElement)
-
{
-
num = otherElement.num;
-
}
-
-
//Method to set the value of the instance variable num.
-
//Postcondition: num = x;
-
public void setNum(int x)
-
{
-
num = x;
-
}
-
-
//Method to return the value of the instance variable num.
-
//Postcondition: The value of num is returned.
-
public int getNum()
-
{
-
return num;
-
}
-
-
public boolean equals(DataElement otherElement)
-
{
-
IntElement temp = (IntElement) otherElement;
-
return (num == temp.num);
-
}
-
-
public int compareTo(DataElement otherElement)
-
{
-
IntElement temp = (IntElement) otherElement;
-
return (num - temp.num);
-
}
-
-
public void makeCopy(DataElement otherElement)
-
{
-
IntElement temp = (IntElement) otherElement;
-
num = temp.num;
-
}
-
-
public DataElement getCopy()
-
{
-
IntElement temp = new IntElement(num);
-
return temp;
-
}
-
-
public String toString()
-
{
-
return String.valueOf(num);
-
}
-
}
| | 10K+
P: 13,264
| - public static void main(String[] args) throws IOException
-
{
-
UnorderedLinkedList list
-
= new UnorderedLinkedList();
-
UnorderedLinkedList tempList =
-
new UnorderedLinkedList();
-
IntElement num = new IntElement();
-
-
StringTokenizer tokenizer;
-
-
int position;
-
-
System.out.print(" Enter 8 integers on the " + "same line: ");
-
System.out.flush();
-
-
tokenizer = new
-
StringTokenizer(keyboard.readLine());
-
-
//num.setNum(Integer.parseInt(tokenizer.nextToken()) ); ***commented out
-
-
while (tokenizer.hasMoreTokens())
-
{
-
num.setNum(Integer.parseInt(tokenizer.nextToken()) );
-
list.insertLast(num);
-
}
-
-
System.out.println();
-
System.out.print("The list you " + "entered is: ");
-
list.print();
-
System.out.println();
-
System.out.println("Length of list: " + list.length());
-
-
tempList.copyList(list);
-
-
System.out.print("Enter the num to " + "be deleted: ");
-
System.out.flush();
-
num.setNum(Integer.parseInt(keyboard.readLine()));
-
System.out.println();
-
-
tempList.deleteNode(num);
-
System.out.println("After deleting " + num + " the node, tempList:");
-
tempList.print();
-
System.out.println();
-
System.out.println("Length of list: " + tempList.length());
-
-
System.out.print("Enter the search " + "item: ");
-
System.out.flush();
-
-
num.setNum(Integer.parseInt(keyboard.readLine()));
-
System.out.println();
-
-
if(tempList.search(num))//****boolean please
-
System.out.println("Item found in " + "the list");
-
else
-
System.out.println("Item not found");
-
-
System.out.print("The list temp: ");
-
tempList.print();
-
System.out.println();
-
System.out.println("Length of list: " + tempList.length());
-
}
I could only guess what you wanted to do, so I made those two changes
| |
P: 28
|
Thank you. i appreciate it.
| | 10K+
P: 13,264
|
Thank you. i appreciate it.
I don't really see how I've helped you here, but hopefully now you will forgive my irrational attack at your username. I hope you understand ofcourse given the circumstances...
| | | | Question stats - viewed: 1379
- replies: 7
- date asked: Oct 17 '06
| |