Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

package ex2; public class Exercise2 { private static class Node { private E element; private Node prev; private Node next; public Node(E e, Node p,

package ex2;

public class Exercise2 { private static class Node { private E element; private Node prev; private Node next; public Node(E e, Node p, Node n) { element = e; prev = p; next = n; }

public E getElement() { return element; } public Node getPrev() { return prev; } public Node getNext() { return next; } public void setPrev(Node p) { prev = p; } public void setNext(Node n) { next = n; } } private Node header; private Node trailer; private int size = 0;

public Exercise2() { header = new Node<>(null, null, null); trailer = new Node<>(null, header, null); header.setNext(trailer); }

public int size() { return size; }

public boolean isEmpty() { return size == 0; }

public E first() { if (isEmpty()) return null; return header.getNext().getElement(); }

public E last() { if (isEmpty()) return null; return trailer.getPrev().getElement(); }

public void addFirst(E e) { addBetween(e, header, header.getNext()); }

public void addLast(E e) { addBetween(e, trailer.getPrev(), trailer); }

public E removeFirst() { if (isEmpty()) return null; return remove(header.getNext()); }

public E removeLast() { if (isEmpty()) return null; return remove(trailer.getPrev()); }

private void addBetween(E e, Node predecessor, Node successor) { if (predecessor == header && successor == trailer) { // skip creation of new node for header/trailer header.setNext(new Node<>(e, header, trailer)); trailer.setPrev(header.getNext()); } else { Node newest = new Node<>(e, predecessor, successor); predecessor.setNext(newest); successor.setPrev(newest); } size++; }

private E remove(Node node) { Node predecessor = node.getPrev(); Node successor = node.getNext(); predecessor.setNext(successor); successor.setPrev(predecessor); size--; return node.getElement(); }

public String toString() { StringBuilder sb = new StringBuilder("("); Node walk = header; while (walk != null) { sb.append(walk.getElement()); walk = walk.getNext(); if (walk != null) { sb.append(", "); } } sb.append(")"); return sb.toString(); } public void reverseList() { Node current = header; header = trailer.getPrev(); trailer = current.getNext();

while (current != null) { Node temp = current.getNext(); current.setNext(current.getPrev()); current.setPrev(temp); current = temp; } }

public static void main(String[] args) { Exercise2 list = new Exercise2(); list.addFirst("MSP"); list.addLast("ATL"); list.addLast("BOS"); list.addFirst("LAX"); System.out.println(list); list.reverseList(); System.out.println(list); } } Here's my code, the output should reverse the list, but I'm keep getting errors, anyone mind to help me to get a proper output?

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

Structured Search For Big Data From Keywords To Key-objects

Authors: Mikhail Gilula

1st Edition

012804652X, 9780128046524

More Books

Students also viewed these Databases questions