need assistance

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • satan
    New Member
    • Oct 2006
    • 28

    #1

    need assistance

    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 UnorderedLinked List.

    These are my classes:



    Code:
    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
    }


    Code:
    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
    }

    Code:
    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());
    }
    }
  • r035198x
    MVP
    • Sep 2006
    • 13225

    #2
    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?

    Comment

    • satan
      New Member
      • Oct 2006
      • 28

      #3
      Originally posted by r035198x
      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

      Comment

      • r035198x
        MVP
        • Sep 2006
        • 13225

        #4
        Originally posted by satan
        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?

        Comment

        • satan
          New Member
          • Oct 2006
          • 28

          #5
          Code:
          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);
              }
          }

          Comment

          • r035198x
            MVP
            • Sep 2006
            • 13225

            #6
            Code:
            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

            Comment

            • satan
              New Member
              • Oct 2006
              • 28

              #7
              Thank you. i appreciate it.

              Comment

              • r035198x
                MVP
                • Sep 2006
                • 13225

                #8
                Originally posted by satan
                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.. .

                Comment

                Working...