Java: An Introduction to Problem Solving and Programming (8th Edition)
8th Edition
ISBN: 9780134462035
Author: Walter Savitch
Publisher: PEARSON
expand_more
expand_more
format_list_bulleted
Question
Chapter 12, Problem 9PP
Program Plan Intro
Doubly linked list
Program Plan:
“DoublyLinkedList.java”:
- Define “DoublyLinkedList” class.
- Declare required variables.
- Default constructor for “DoublyLinkedList” class.
- Define the method “length”.
- Declare required variable.
- Check condition using “while” loop.
- Return the result of count value
- Define “addANodeToStart” method.
- Declare variable by using “ListNode” class.
- Assign value to head.
- If tail is null, then assign tail to head.
- If old head is not null, then set the values to link value at head and previous value at old head node.
- Define “getDataAtCurrent” method.
- If current is not null, then returns the data at current.
- Otherwise, display the given error message.
- Finally returns the null value.
- Define “resetIteration” method.
- This method is used to set current to head.
- Define “moreToIterate” method.
- This method is used to return the result of “current != null”.
- Define “goToNext” method.
- If current is not null, then set current value to link value at current.
- If head is not null, then display given message.
- Define “goToPrevious” method.
- If current is not null, then set current to previous value at current.
- If head is not null, then display given error statement.
- Define “insertNodeAfterCurrent” method.
- Declare required variables.
- If tail is equal to current, then set tail to new node.
- If current is not null, then set given values to given variables.
- If the link value at new node is not null, then set the value to new node.
- If the value of head is not null, then display given error message.
- If the link value at new node is not null, then set the value to new node.
- Define “deleteCurrentNode” method.
- Declare variable using “ListNode” class.
- If tail is equal to current and current is not null, then set tail to previous value at current node.
- If current and previous value at current node is not null, then set values for given variables.
- If current is not null and previous value at current node is null, then set values for head node.
- Otherwise, that is if current is equal to null, then display error message.
- Define “deleteHeadNode” method.
- If tail is equal to head, then set tail to null.
- If head is not null, then assign values for head.
- Otherwise, display error message.
- Define “findInList” method.
- Declare required variables.
- Check condition using “while” loop.
- Get the data position by calling the method “getData” and then store it to a variable “data_position”.
- If the position of data is equals to target node, then set “current” to “location” and then return true.
- Then get the location by calling the method “getLink”.
- Finally assign the “current” to “null” and return “false”.
- Define “onList” method.
- This method returns the result of “Find(target_node) != null”.
- Define “Find” method.
- Declare required variables.
- Check condition using “while” loop.
- Define “showList” method.
- Declare required variables.
- Display the data at each location using “while” loop.
- Define “displayListValues” method.
- This method is used to return the values in head, current, tail and number of items in list.
- Define node class “ListNode”.
- Declare required variables
- Define constructor for “ListNode” class.
- Define parameterized constructor for “ListNode” class.
- Define set and get method for data and link.
“DoublyLinkedListTest.java”:
- Define “DoublyLinkedListTest” class.
- Define main function.
- Assign result to “false”.
- Create an object for “DoublyLinkedList” class.
- Display the values in list by calling the method “displayListValues”.
- Add a name “John” to “nameList” by calling the method “addANodeToStart”.
- After adding, display the values in list by calling the method “displayListValues”.
- Reset the iteration for given list by calling the method “resetIteration”.
- Add a name “Merry” to “nameList” by calling the method “addANodeToStart”.
- After adding, display the values in list by calling the method “displayListValues”.
- Go to next node by calling the method “goToNext”.
- Add a name “Rose” to “nameList” by calling the method “addANodeToStart”.
- After adding, display the values in list by calling the method “displayListValues”.
- Display the list by calling “showList” method.
- Reset the iteration for given list by calling the method “resetIteration”.
- Go to next node by calling the method “goToNext”.
- After adding, display the values in list by calling the method “displayListValues”.
- Add a name “Jansi” to “nameList” by calling the method “addANodeToStart”.
- After adding, display the values in list by calling the method “displayListValues”.
- Display the list by calling “showList” method.
- Go to next node by calling the method “goToNext”.
- Delete first node by calling “deleteHeadNode” method.
- After deleting, display the list by calling “showList” method.
- Go to next node by calling the method “goToNext”.
- Add a name “Rosie” to “nameList” by calling the method “addANodeToStart”.
- Go to next node by calling the method “goToNext”.
- Add a name “Joshph” to “nameList” by calling the method “addANodeToStart”.
- After adding, display the values in list by calling the method “displayListValues”.
- Display the list by calling “showList” method.
- Go to previous node by calling the method “goToPrevious”.
- Display the values in list by calling the method “displayListValues”.
- Display the list by calling “showList” method.
- Go to previous node by calling the method “goToPrevious”.
- Get the current node by calling the method “getDataAtCurrent”.
- Delete node at current by calling the method “deleteCurrentNode”.
- After deleting, display the values in list by calling the method “displayListValues” and method “showList”.
- Add a name “Jack” to beginning of “nameList” by calling the method “addANodeToStart”.
- After deleting, display the values in list by calling the method “displayListValues” and method “showList”.
- Iterate to the end of list using “while” loop. After iterating, display the values in list by calling the method “displayListValues”.
- Iterate the list in reverse by calling “resetIterationReverse” method.
- After reverse iteration, display the values in list by calling the method “displayListValues”.
- Delete the current node by calling “deleteCurrentNode” method.
- After deleting current node, display the values in list by calling the method “displayListValues” and method “showList”.
- Check if “Rose” is found in list or not by calling “findInList” method. If the given name found, then display the message “Found”. Otherwise, display “Not found”.
- After performing check condition, display the values in list by calling the method “displayListValues” and method “showList”.
- Check if “Josph” is found in list or not by calling “findInList” method. If the given name found, then display the message “Found”. Otherwise, display “Not found”.
- After performing check condition, display the values in list by calling the method “displayListValues” and method “showList”.
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
You may find a doubly-linked list implementation below. Our first class is Node which we can make a new node with a given element. Its constructor also includes previous node reference prev and next node reference next.
We have another class called DoublyLinkedList which has start_node attribute in its constructor as well as the methods such as:
1. insert_to_empty_list() 2. insert_to_end() 3. insert_at_index()
Hints: Make a node object for the new element. Check if the index >= 0.If index is 0, make new node as head; else, make a temp node and iterate to the node previous to the index.If the previous node is not null, adjust the prev and next references. Print a message when the previous node is null.
4. delete_at_start()
5. delete_at_end() .
6. display()
the task is to implement these 3 methods: insert_at_index(), delete_at_end(), display().
hint on how to start thee code
# Initialize the Node
class Node:
def __init__(self, data):
self.item = data…
Trying this again since part of my question keeps disappearing
Given main() in the ShoppingList class, define an insertAtEnd() method in the ItemNode class that adds an element to the end of a linked list. DO NOT print the dummy head node.
Ex. if the input is:
4 Kale Lettuce Carrots Peanuts
where 4 is the number of items to be inserted; Kale, Lettuce, Carrots, Peanuts are the names of the items to be added at the end of the list.
The output is:
Kale Lettuce Carrots Peanuts public class ItemNode { private String item; private ItemNode nextNodeRef; // Reference to the next node
public ItemNode() { item = ""; nextNodeRef = null; }
// Constructor public ItemNode(String itemInit) { this.item = itemInit; this.nextNodeRef = null; }
// Constructor…
Write a method for the Linked Based List class which returns the largest item in the list. If the list is empty return null. Assume that class T is Comparable.DO NOT USE ANY OTHER METHODS OF THE LINKED BASED LIST CLASS.
What is the worst case and best case complexity of the code in the previous problem? Explain your answer.
Chapter 12 Solutions
Java: An Introduction to Problem Solving and Programming (8th Edition)
Ch. 12.1 - Suppose aList is an object of the class...Ch. 12.1 - Prob. 2STQCh. 12.1 - Prob. 3STQCh. 12.1 - Prob. 4STQCh. 12.1 - Can you use the method add to insert an element at...Ch. 12.1 - Prob. 6STQCh. 12.1 - Prob. 7STQCh. 12.1 - If you create a list using the statement...Ch. 12.1 - Prob. 9STQCh. 12.1 - Prob. 11STQ
Ch. 12.1 - Prob. 12STQCh. 12.2 - Prob. 13STQCh. 12.2 - Prob. 14STQCh. 12.2 - Prob. 15STQCh. 12.2 - Prob. 16STQCh. 12.3 - Prob. 17STQCh. 12.3 - Prob. 18STQCh. 12.3 - Prob. 19STQCh. 12.3 - Write a definition of a method isEmpty for the...Ch. 12.3 - Prob. 21STQCh. 12.3 - Prob. 22STQCh. 12.3 - Prob. 23STQCh. 12.3 - Prob. 24STQCh. 12.3 - Redefine the method getDataAtCurrent in...Ch. 12.3 - Repeat Question 25 for the method...Ch. 12.3 - Repeat Question 25 for the method...Ch. 12.3 - Repeat Question 25 for the method...Ch. 12.4 - Revise the definition of the class ListNode in...Ch. 12.4 - Prob. 30STQCh. 12.5 - What is the purpose of the FXML file?Ch. 12.5 - Prob. 32STQCh. 12 - Repeat Exercise 2 in Chapter 7, but use an...Ch. 12 - Prob. 2ECh. 12 - Prob. 3ECh. 12 - Repeat Exercises 6 and 7 in Chapter 7, but use an...Ch. 12 - Write a static method removeDuplicates...Ch. 12 - Write a static method...Ch. 12 - Write a program that will read sentences from a...Ch. 12 - Repeat Exercise 12 in Chapter 7, but use an...Ch. 12 - Write a program that will read a text file that...Ch. 12 - Revise the class StringLinkedList in Listing 12.5...Ch. 12 - Prob. 12ECh. 12 - Write some code that will use an iterator to...Ch. 12 - Prob. 14ECh. 12 - Write some code that will use an iterator to...Ch. 12 - Prob. 17ECh. 12 - Revise the method selectionSort within the class...Ch. 12 - Repeat the previous practice program, but instead...Ch. 12 - Repeat Practice Program 1, but instead write a...Ch. 12 - Write a program that allows the user to enter an...Ch. 12 - Write a program that uses a HashMap to compute a...Ch. 12 - Write a program that creates Pet objects from data...Ch. 12 - Repeat the previous programming project, but sort...Ch. 12 - Repeat the previous programming project, but read...Ch. 12 - Prob. 9PPCh. 12 - Prob. 10PPCh. 12 - Prob. 11PPCh. 12 - Prob. 12PPCh. 12 - Prob. 13PPCh. 12 - Prob. 14PPCh. 12 - Prob. 15PP
Knowledge Booster
Similar questions
- Using the Iterator class, it’s easy to write an interactive program to move through a linked list. This also gives us a chance to put all the code for both the Iterator class and the LinkedList class in one place.arrow_forwardThe implementation of a queue in an array, as given in this chapter, uses the variable count to determine whether the queue is empty or full. You can also use the variable count to return the number of elements in the queue. On the other hand, class linkedQueueType does not use such a variable to keep track of the number of elements in the queue. Redefine the class linkedQueueType by adding the variable count to keep track of the number of elements in the queue. Modify the definitions of the functions addQueue and deleteQueue as necessary. Add the function queueCount to return the number of elements in the queue. Also, write a program to test various operations of the class you defined.arrow_forwardGive an example of a situation where you would use a tuple, set, or dict in place of a list. Just pick one, you don't have to explain all three, but do be specific about why the collection you picked would be more suitable for the situation that you describe than a list.arrow_forward
- There’s a somewhat imperfect analogy between a linked list and a railroad train, where individual cars represent links. Imagine how you would carry out various linked list operations, such as those implemented by the member functions insertFirst(), removeFirst(), and remove(int key) from the LinkList class in this hour. Also implement an insertAfter() function. You’ll need some sidings and switches. You can use a model train set if you have one. Otherwise, try drawing tracks on a piece of paper and using business cards for train cars.arrow_forwardin java Write a method for the Linked Based List class which returns the largest item in the list. If the list is empty return null. Assume that class T is Comparable.DO NOT USE ANY OTHER METHODS OF THE LINKED BASED LIST CLASS. What is the worst case and best case complexity of the code in the previous problem? Explain your answer.arrow_forwardImplement a program that creates an unsorted list by using a linked list implemented by yourself. NOT allowed to use LinkedList class or any other classes that offers list functions. It is REQUIRED to use an ItemType class and a NodeType struct to solve this. Use C++! The “data.txt” file has three lines of data 100, 110, 120, 130, 140, 150, 160 100, 130, 160 1@0, 2@3, 3@END You need to create an empty unsorted list add the numbers from the first line to list using putItem() function. Then print all the current keys to command line in one line using printAll(). delete the numbers given by the second line in the list by using deleteItem() function. Then print all the current keys to command line in one line using printAll().. putItem () the numbers in the third line of the data file to the corresponding location in The list. For example, 1@0 means adding number 1 at position 0 of the list. Then print all the current keys to command line in one line…arrow_forward
- Given the linked list data structure, implement a sub-class TSortedList that makes sure that elements are inserted and maintained in an ascending order in the list. So, given the input sequence {1,7,3,11,5}, when printing the list after inserting the last element it should print like 1, 3, 5, 7, 11. Note that with inheritance, you have to only care about the insertion situation as deletion should still be handled by the parent class.arrow_forwardBuild doubly-linked lists using a nested class called DoubleNode, where each node includes a reference to the item before it and the item after it in the list (null if there is no such item). Then put in place static methods for inserting at the start, inserting at the end, removing from the start, removing from the finish, inserting before a given node, inserting after a given node, and removing a given node.arrow_forwardGiven the following definitions that we have used in class to represent a doubly-linked, circular List with a dummy-header node that contains data of type "struct Student". typedef struct { char *name; char *major; } Student;typedef struct node { Student *data; struct node *next; struct node *prev; } Node;typedef struct { Node *header; int size; } LinkedList;LinkedList *roster; Here is a picture of what the Linked List might look like, although you should answer the following question for a general list (ie, that does not necessarily contain 3 data items). What TYPE of data is the following: *roster Group of answer choices int int * Node Node * Student Student * char char * This is legal code, but it does not match any of the types listed above. This is illegal code, and would produce a syntax error No hand written solution and no imagearrow_forward
- Given the following definitions that we have used in class to represent a doubly-linked, circular List with a dummy-header node that contains data of type "struct Student". typedef struct { char *name; char *major; } Student; typedef struct node { Student *data; struct node *next; struct node *prev; } Node; typedef struct { Node *header; int size; } LinkedList; LinkedList *roster; Here is a picture of what the Linked List might look like, although you should answer the following question for a general list (ie, that does not necessarily contain 3 data items). What TYPE of data is the following: roster->header->data->next->next Group of answer choices int int * Node Node * Student Student * char char * This is legal code, but it does not match any of the types listed above. This is illegal code, and would produce a syntax error.arrow_forwardWrite a method replace to be included in the class KWLinkedList (for doubly linked list) that accepts two parameters, searchItem and repItem of type E. The method searches for searchItem in the doubly linked list, if found then replace it with repItem and return true. If the searchItem is not found in the doubly linked list, then insert repItem at the end of the linked list and return false. Assume that the list is not empty. You can use ListIterator and its methods to search the searchItem in the list and replace it with repItem if found. Do not call any method of class KWLinkedList to add a new node at the end of the list. Method Heading: public boolean replace(E searchItem, E repItem) Example: searchItem: 15 repItem: 17 List (before method call): 9 10 15 20 4 5 6 List (after method call) : 9 10 17 20 4 5 6arrow_forwardGiven main.py and a PersonNode class, complete the PersonList class by writing find_first() and find_last() methods at the end of the PersonList.py file. The find_first() method should find the first occurrence of an age value in the linked list and return the corresponding node. Similarly, the find_last() method should find the last occurrence of the age value in the linked list and return the corresponding node. For both methods, if the age value is not found, None should be returned. The program will replace the name value of each found node with a new name. Ex. If the input is: Alex 23 Tom 41 Michelle 34 Vicky 23 -1 23 Connor 34 Michela main.py(can not edit) from PersonNode import PersonNodefrom PersonList import PersonList if __name__ == "__main__": person_list = PersonList() # Read input lines until encountering '-1' input_line = input() while input_line != '-1': split_input = input_line.split(' ') name = split_input[0] age =…arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning