
Explanation of Solution
Reimplementation of DoublyLinkedList class using only one sentinel node:
The doubly linked list is a linked data structure which contains the collection of sequentially data with two sentinel nodes such as “header” and “trailer”.
- If there is only one sentinel node, then the list is circularly linked using sentinel node.
- That is, header is sentinel node means, the next of the header is first node of list and previous node of header is last node of list.
Code for DoublyLinkedList class using only one sentinel node:
//Define the DoublyLinkedList class
public class DoublyLinkedList<E>
{
//Declare only one sentinel node
private Node<E> header;
//Declare and initialize the "size" variable
private int size = 0;
/*Define the Constructor to construct a new empty list. */
public DoublyLinkedList()
{
//Create header sentinel
header = new Node<>(null, null, null);
}
//Define the size() method
public int size()
{
/*Returns the number of elements in the linked list. */
return size;
}
//Define isEmpty() method
public boolean isEmpty()
{
//Check whether the linked list is empty
return size == 0;
}
//Define first() method
public E first()
{
//Check whether the list is empty
if(isEmpty())
//Return null
return null;
//Returns the first element of the list
return header.getNext().getElement();
}
//Define last() method
public E last( )
{
//Check whether the list is empty
if(isEmpty())
//Return null
return null;
/*Returns the last element of the list using the single sentinel node "header". */
return header.getPrev().getElement( );
}
//Define addFirst() method
public void addFirst(E e)
{
/*Call addBetween() method to adds element "e" to the front of the list. */
addBetween(e, header, header.getNext
}
/Define the addLast() method
public void addLast(E e)
{
/*Call addBetween() method to adds element e to the end of the list using single sentinel node "header". */
addBetween(e, header.getPrev(), header);
}
//Define the removeFirst() method
public E removeFirst()
{
//Check whether the list is empty
if (isEmpty())
//Return null
return null;
/*Call remove() method to removes and returns the first element of the list. */
return remove(header...

Want to see the full answer?
Check out a sample textbook solution
Chapter 3 Solutions
Data Structures and Algorithms in Java
- Question3: Passenger Rail Agency for South Africa Train Scheduling System Problem Statement (30 MARKS) Design and implement a train scheduling system for Prasa railway network. The system should handle the following functionalities: 1. Scheduling trains: Allow the addition of train schedules, ensuring that no two trains use the same platform at the same time at any station. 2. Dynamic updates: Enable adding new train schedules and canceling existing ones. 3. Real-time simulation: Use multithreading to simulate the operation of trains (e.g., arriving, departing). 4. Data management: Use ArrayList to manage train schedules and platform assignments. Requirements 1. Add Train Schedule, Cancel Scheduled Train, View Train Schedules and Platform Management 2. Concurrency Handling with Multithreading i.e Use threads to simulate train operations, Each train runs as a separate thread, simulating its arrival, departure, and travel status. 3. Use ArrayList to manage train schedules for each…arrow_forwardplease answer my java question correctly , include all comments etc and layout and structure must be correct , follow the requirementsarrow_forwardplease answer my java question correctly , include all comments etc and layout and structure must be correct , follow the requirementsarrow_forward
- please answer my java question correctly , follow all requirements , add all commets etc and layout and structure must be perfect tooarrow_forwardplease answer my java question correctly , include all comments etc and layout and structure must be correct , follow the requirementsarrow_forward7. Long-Distance CallsA long-distance provider charges the following rates for telephone calls: Rate Category Rate per MinuteDaytime (6:00 a.m. through 5:59 p.m.) $0.07Evening (6:00 p.m. through 11:59 p.m.) $0.12Off-Peak (midnight through 5:59 a.m.) $0.05Write a GUI application that allows the user to select a rate category (from a set of radio buttons), and enter the number of minutes of the call into an Entry widget. An info dialog box should display the charge for the call.arrow_forward
- Name and Address The Name and Address Problem Write a GUI program that displays your name and address when a button is clicked. The program’s window should appear as the sketch on the left side of Figure 13-61 when it runs. When the user clicks the Show Info button, the program should display your name and address, as shown in the sketch on the right of the figure.arrow_forwardExercise 1 Function and Structure [30 pts] Please debug the following program and answer the following questions. There is a cycle in a linked list if some node in the list can be reached again by continuously following the next pointer. #include typedef struct node { int value; struct node *next; } node; int 11_has_cycle (node *first) if (first == node *head = { NULL) return 0; first; while (head->next != NULL) { } if (head first) { return 1; } head = head->next; return 0; void test ll_has_cycle () { int i; node nodes [6]; for (i = 0; i < 6; i++) { nodes [i] .next = NULL; nodes [i].value = i; } nodes [0] .next = &nodes [1]; nodes [1] .next = &nodes [2]; nodes [2] .next = &nodes [3]; nodes [3] .next nodes [4] .next &nodes [4]; NULL; nodes [5] .next = &nodes [0]; printf("1. Checking first list for cycles. \n Function 11_has_cycle says it has s cycle\n\n", 11_has_cycle (&nodes [0])?"a":"no"); printf("2. Checking length-zero list for cycles. \n Function 11_has_cycle says it has %s…arrow_forwardhow to read log logsarrow_forward
- Discrete Mathematics for Computer Engineeringarrow_forwardQuestion 1 - Array Iterators Like the JS on A2, there is no visual component to this question. The HTML really just needs to load the JavaScript, everything else will output to the console. The JS file should the completion of the task, and all necessary testing, so that just loading the file will complete the task with enough different inputs to ensure it works. Even Numbers [3 marks] Create a function that determines if a provided number is even. Define an array of numbers, then on the array use the appropriate array iterator to determine if the array contains only even numbers using the function you defined. Output the results, and test with several arrays. Long Names [3 marks] Define an array of names. Use an iterator to retrieve a new array containing only the names longer then 12 characters. Your iterator should be passed an anonymous arrow function. Test with several different arrays First Names [3 marks] Define an array called fullNames that contains 7 javascript objects of…arrow_forwardDiscrete Mathematics for Computer Engineeringarrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningEBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTNew Perspectives on HTML5, CSS3, and JavaScriptComputer ScienceISBN:9781305503922Author:Patrick M. CareyPublisher:Cengage Learning
- Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage LearningC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,





