Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Instead of a String[] it must use a Doubly-Linked List with a Dummy Front and Dummy Rear to store the List's data. HOW DO I

Instead of a String[] it must use a Doubly-Linked List with a Dummy Front and Dummy Rear to store the List's data.

HOW DO I MAKE MY NODE A PRIVATE CLASS AND GET THE DESIRED OUTPUT????

//MAIN

public class AssignmentFour { public static void main(String[] args) { List myList = new List(); List emptyList = new List(myList); // Cause List Empty Message myList.removeFront(); myList.removeRear(); myList.removeItem("a"); // Cause Not found message myList.addToFront("x"); myList.removeItem("y"); myList.removeItem("x"); myList.addAfterItem("x", "z"); myList.addBeforeItem("x", "z"); // Normal behavior myList.addToFront("not."); myList.addToFront("or"); myList.addToRear("is"); myList.addToRear("try."); myList.addAfterItem("is", "no"); myList.addBeforeItem("is", "There"); myList.addToFront("Do"); myList.addAfterItem("or", "do"); myList.print("Original list"); myList.printSorted("Sorted Original List"); emptyList.print("Empty List"); List copyOfList = new List(myList); sop(" Front is " + myList.getFront()); sop("Rear is " + myList.getRear()); sop("Count is " + myList.askCount()); sop("Is There present? " + myList.isPresent("There")); sop("Is Dog present? " + myList.isPresent("Dog")); myList.addToFront("junk"); myList.addToRear("morejunk"); myList.addAfterItem("or", "moremorejunk"); myList.print("List with junk"); sop("Count is " + myList.askCount()); copyOfList.print("Untouched copy of the list"); myList.removeFront(); myList.removeRear(); myList.removeItem("moremorejunk"); myList.print("List with junk removed"); sop("Count is " + myList.askCount()); sop(""); copyOfList.print("Untouched copy of the list"); while(myList.askCount() > 0) myList.removeFront(); myList.print("List after removing all items"); copyOfList.print("Copy of List after removing all items"); } private static void sop(String s) { System.out.println(s); } }

//CLASS LIST

public class List{

private class Node{ String item; public Node next; public Node prev; //constructor public Node(java.lang.String item){ this.item = item; this.next = null; this.prev = null; } //copy constructor public List(List list){ this.front = list.front; this.rear = list.rear; this.mCount=list.mCount; }

//default constructor public List() { //list is null and Node count=0 this.mCount = 0; this.front = null; this.rear = null; }

//function addToFront() public void addToFront(java.lang.String item) { //if list is null then new node will be the front and rear if(front == null && rear == null){ this.front = new Node(item); this.rear = front; } else{ Node temp = new Node(item); temp.next = this.front; this.front.prev = temp; this.front = temp; } this.mCount+=1; }

//add To Rear() function public void addToRear(java.lang.String item) { //if list is null then front,rear will be the new node if(front == null){ this.front = new Node(item); this.rear = front; } else{ Node temp = new Node(item); this.rear.next = temp; temp.prev=this.rear; this.rear=temp; } this.mCount+= 1; } //addBeforeItem() function public void addBeforeItem(java.lang.String beforeItem, java.lang.String item) { if(this.mCount == 0){ System.out.println("List is empty"); } else{ int flag = -1; Node temp = this.front; while(temp != null){ if(temp.item.equals(beforeItem)){ flag = 1; break; } temp = temp.next; } if(flag!= -1){ if(temp == this.front){ this.addToFront(item); } else{ Node new_node = new Node(item); Node tempPrev = temp.prev; tempPrev.next = new_node; new_node.prev = tempPrev; temp.prev = new_node; new_node.next = temp; } this.mCount+= 1; } else{ System.out.println("Item Not found"); } } } //addAfterItem() function /** * * @param afterItem * @param item */ public void addAfterItem(java.lang.String afterItem, java.lang.String item) { if(this.mCount == 0){ System.out.println("List is empty"); } else{ int flag = -1; // to check afterItem is present or not Node temp = this.front; while(temp!= null){ if(temp.item.equals(afterItem)){ flag = 1; //afterItem is present break; } temp=temp.next; } if(flag!= -1){ //if afterItem is rear then we have to call addTo Rear() if(temp==this.rear){ this.addToRear(item); } else{ /* * let temp is afterNode temp -> new_node -> tempNext <- <- */ Node new_node = new Node(item); Node tempNext = temp.next; temp.next = new_node; new_node.prev = temp; new_node.next = tempNext; tempNext.prev = new_node; } this.mCount+= 1; } else{ System.out.println("Item Not found"); } }

}

public java.lang.String getFront() { if(this.front == null && this.rear == null){ return null; } else{ return this.front.item; } }

public java.lang.String getRear() { if(this.front == null && this.rear == null){ return null; } else{ return this.rear.item; } }

public boolean isPresent(String item) { Node temp = this.front;

while(temp!= null){ if(temp.item.equals(item)){ return true; //item present } temp=temp.next; } return false; }

public int askCount() { return mCount; } public void removeFront() { if(mCount!= 0){ //signleNode if(mCount == 1){ this.front = null; this.rear = null; } this.mCount-= 1; } //list empty else{ this.front = null; this.rear = null; System.out.println("List is Empty"); } } public void removeRear() { if(mCount!= 0){ //singleNode if(mCount == 1){ this.front = null; this.rear = null; } //MoreNodes else{ Node temp = this.rear.prev; this.rear = null; temp.next = null; this.rear = temp; } this.mCount-= 1; } //List is empty else{ System.out.println("List is Empty"); }

}

public void removeItem(java.lang.String item) { if(mCount == 0){ System.out.println("List is empty"); } else{ int flag=- 1; Node temp = this.front; while(temp!= null){ if(temp.item.equals(item)){ flag=1; //item found break; } temp=temp.next; } if(flag!=-1){ //front node deleted if(temp == this.front){ removeFront(); } //rear node deleted else if(temp == this.rear){ removeRear(); } //not if front or rear else{ Node tempprev = temp.prev; tempprev.next = temp.next; temp=null; this.mCount-= 1; } } else{ System.out.println("Item Not found"); } } }

public void print(java.lang.String title) { System.out.println(title); Node temp = this.front; while(temp!= null){ System.out.printf("%s ",temp.item); temp = temp.next; } System.out.println(); }

public void printSorted(java.lang.String title) { Node temp = this.front; Node temp1 = this.front; String str; for(temp1=temp;temp1!= null;temp1 = temp1.next){ if(temp.item.compareTo(temp1.item)>0){ str = temp.item; temp.item = temp1.item; temp1.item = str; } }

} //variables private int mCount; private Node front; private Node rear;

}

public class AssignmentFour { public static void main(String[] args) { List myList = new List(); List emptyList = new List(myList); // Cause List Empty Message myList.removeFront(); myList.removeRear(); myList.removeItem("a"); // Cause Not found message myList.addToFront("x"); myList.removeItem("y"); myList.removeItem("x"); myList.addAfterItem("x", "z"); myList.addBeforeItem("x", "z"); // Normal behavior myList.addToFront("not."); myList.addToFront("or"); myList.addToRear("is"); myList.addToRear("try."); myList.addAfterItem("is", "no"); myList.addBeforeItem("is", "There"); myList.addToFront("Do"); myList.addAfterItem("or", "do"); myList.print("Original list"); myList.printSorted("Sorted Original List"); emptyList.print("Empty List"); List copyOfList = new List(myList); sop(" Front is " + myList.getFront()); sop("Rear is " + myList.getRear()); sop("Count is " + myList.askCount()); sop("Is There present? " + myList.isPresent("There")); sop("Is Dog present? " + myList.isPresent("Dog")); myList.addToFront("junk"); myList.addToRear("morejunk"); myList.addAfterItem("or", "moremorejunk"); myList.print("List with junk"); sop("Count is " + myList.askCount()); copyOfList.print("Untouched copy of the list"); myList.removeFront(); myList.removeRear(); myList.removeItem("moremorejunk"); myList.print("List with junk removed"); sop("Count is " + myList.askCount()); sop(""); copyOfList.print("Untouched copy of the list"); while(myList.askCount() > 0) myList.removeFront(); myList.print("List after removing all items"); copyOfList.print("Copy of List after removing all items"); } private static void sop(String s) { System.out.println(s); } }

// DESIRED OUTPUT:

List Empty List Empty List Empty Item not found Item Not Found Item Not Found Original list Do or do not. There is no try. Sorted Original List Do There do is no not. or try. Empty List Front is Do Rear is try. Count is 8 Is There present? true Is Dog present? false List with junk junk Do or moremorejunk do not. There is no try. morejunk Count is 11 Untouched copy of the list Do or do not. There is no try. List with junk removed Do or do not. There is no try. Count is 8 Untouched copy of the list Do or do not. There is no try. List after removing all items Copy of List after removing all items Do or do not. There is no try. 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions

Question

23. What are the effects of cannabinoids on neurons?

Answered: 1 week ago

Question

How did you feel about taking piano lessons as a child? (general)

Answered: 1 week ago