Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Linked Lists - Deque (Double-ended queue) Implement a nested class DoubleNode fo

ID: 3811140 • Letter: L

Question

Linked Lists - Deque (Double-ended queue) Implement a nested class DoubleNode for building doubly-linked lists, where each node contains a reference to the item preceding it and the item following it in the list (null if there is no such item). Then implement methods for the following tasks: Insert at the beginning Insert at the end Remove from the beginning Remove from the end Insert before a give node Insert after a given node Remove a given node Move to front (move an object to the front) Move to end (moved and object to the end) Stacks - Evaluating Arithmetic Expressions Write a class ArithmeticExpreisionEvaluator that evaluates an infix arithmetic expression. Do this is two steps First, convert the infix expression to a postfix expression: create a filter Infix To Postfix that converts an arithmetic expression from infix to postfix. Second, evaluate the postfix expression: write a postfix evaluator EvaluatePostfix that takes a postfix expression, evaluates it and print the value. Your program should print the infix expression, postfix expression, and the final result. Write a program that generates mazes of arbitrary size using the union-find algorithm. A simple algorithm to generate the maze is to start by creating an N times M grid of cells separated by walls on all sides, except for entree and exit. then continually choose a wall randomly, and knock it down if, the cells are not already connected to each other. If we repeat the process until the starting and ending cells are connected, we have a maze. It is better to continue knocking down the walls until every cell is reachable from every cell as this would generate more false leads in the maze. Test you algorithm by creating a 10 times 10 grid, and print all the walls that have been knocked down. Draw the resulting maze (hand-drawing is acceptable)

Explanation / Answer

1. Linked Lists- Deque(Double ended queue)- Program

import java.util.*;

public class DoublyLinkedList<E> {

    private DoubleNode head;

private DoubleNode tail;

    private int size;

private class DoubleNode {

        E element;

DoubleNode next;

DoubleNode prev;

        public DoubleNode(E element, DoubleNode next, DoubleNode prev) {

            this.element = element;

            this.next = next;

            this.prev = prev;

        }

    }

    public DoublyLinkedList() {

        size = 0;

}

    public int size() { return size; }

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

    public void addFirst(E element) {

DoubleNode tmp = new DoubleNode(element, head, null);

        if(head != null ) {head.prev = tmp;}

        head = tmp;

        if(tail == null) { tail = tmp;}

        size++;

    }

public void addLast(E element) {

DoubleNode tmp = new DoubleNode(element, null, tail);

        if(tail != null) {tail.next = tmp;}

        tail = tmp;

        if(head == null) { head = tmp;}

        size++;

}

public E removeFirst() {

        if (size == 0) throw new NoSuchElementException();

DoubleNode tmp = head;

        head = head.next;

        head.prev = null;

        size--;

        return tmp.element;

    }

    public E removeLast() {

        if (size == 0) throw new NoSuchElementException();

DoubleNode tmp = tail;

        tail = tail.prev;

        tail.next = null;

        size--;

return tmp.element;

    }

public void insertBeforeNode(E element,int pos){

DoubleNode tmp = new DoubleNode(element, null, null);

if(pos==1)

addFirst(element);

else{

DoubleNode ptr=head;

for(int i=2;i<=size;i++){

if(i==pos-1){

DoubleNode newnode=ptr.next;

ptr.next=tmp;

tmp.prev=ptr;

tmp.next=newnode;

newnode.prev=tmp;

}

ptr=ptr.next;

}

size++;

}

public void insertAfterNode(E element,int pos){

DoubleNode tmp = new DoubleNode(element, null, null);

if(pos==1)

addLast(element);

else{

DoubleNode ptr=head;

for(int i=2;i<=size;i++){

if(i==pos+1){

DoubleNode newnode=ptr.next;

ptr.next=tmp;

tmp.prev=ptr;

tmp.next=newnode;

newnode.prev=tmp;

}

ptr=ptr.next;

}

size++;

}

public void deleteNode(DoubleNode del){

if(head==null && del==null)

return;

if(head==del)

head=del.next;

if(del.next!=null)

del.next.prev=del.prev;

if(del.prev!=null)

del.prev.next=del.next;

size--;

return;

}

public void moveToFront(DoubleNode node){

if(head==node)

return;

else if(tail==node){

node.prev.next=null;

tail=node.prev;

}

else{

node.prev.next=node.next;

node.next.prev=node.prev;

}

head.prev=node;

node.next=head;

node.prev=null;

head=node;

}

public void moveToEnd(DoubleNode node){

if(tail==node)

return;

else if(head==node){

node.next.prev=null;

head=node.next;

}

else{

node.next.prev=node.prev;

node.prev.next=node.next;

}

tail.next=node;

node.prev=tail;

node.next=null;

tail=node;

}

    public static void main(String a[]){

DoublyLinkedListImpl<Integer> dll = new DoublyLinkedListImpl<Integer>();

        dll.addFirst(10);

        dll.addFirst(34);

        dll.addLast(56);

        dll.addLast(364);

dll.removeFirst();

        dll.removeLast();

  

    }

}

1. Linked Lists- Deque(Double ended queue)- Program

import java.util.*;

public class DoublyLinkedList<E> {

    private DoubleNode head;

private DoubleNode tail;

    private int size;

private class DoubleNode {

        E element;

DoubleNode next;

DoubleNode prev;

        public DoubleNode(E element, DoubleNode next, DoubleNode prev) {

            this.element = element;

            this.next = next;

            this.prev = prev;

        }

    }

    public DoublyLinkedList() {

        size = 0;

}

    public int size() { return size; }

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

    public void addFirst(E element) {

DoubleNode tmp = new DoubleNode(element, head, null);

        if(head != null ) {head.prev = tmp;}

        head = tmp;

        if(tail == null) { tail = tmp;}

        size++;

    }

public void addLast(E element) {

DoubleNode tmp = new DoubleNode(element, null, tail);

        if(tail != null) {tail.next = tmp;}

        tail = tmp;

        if(head == null) { head = tmp;}

        size++;

}

public E removeFirst() {

        if (size == 0) throw new NoSuchElementException();

DoubleNode tmp = head;

        head = head.next;

        head.prev = null;

        size--;

        return tmp.element;

    }

    public E removeLast() {

        if (size == 0) throw new NoSuchElementException();

DoubleNode tmp = tail;

        tail = tail.prev;

        tail.next = null;

        size--;

return tmp.element;

    }

public void insertBeforeNode(E element,int pos){

DoubleNode tmp = new DoubleNode(element, null, null);

if(pos==1)

addFirst(element);

else{

DoubleNode ptr=head;

for(int i=2;i<=size;i++){

if(i==pos-1){

DoubleNode newnode=ptr.next;

ptr.next=tmp;

tmp.prev=ptr;

tmp.next=newnode;

newnode.prev=tmp;

}

ptr=ptr.next;

}

size++;

}

public void insertAfterNode(E element,int pos){

DoubleNode tmp = new DoubleNode(element, null, null);

if(pos==1)

addLast(element);

else{

DoubleNode ptr=head;

for(int i=2;i<=size;i++){

if(i==pos+1){

DoubleNode newnode=ptr.next;

ptr.next=tmp;

tmp.prev=ptr;

tmp.next=newnode;

newnode.prev=tmp;

}

ptr=ptr.next;

}

size++;

}

public void deleteNode(DoubleNode del){

if(head==null && del==null)

return;

if(head==del)

head=del.next;

if(del.next!=null)

del.next.prev=del.prev;

if(del.prev!=null)

del.prev.next=del.next;

size--;

return;

}

public void moveToFront(DoubleNode node){

if(head==node)

return;

else if(tail==node){

node.prev.next=null;

tail=node.prev;

}

else{

node.prev.next=node.next;

node.next.prev=node.prev;

}

head.prev=node;

node.next=head;

node.prev=null;

head=node;

}

public void moveToEnd(DoubleNode node){

if(tail==node)

return;

else if(head==node){

node.next.prev=null;

head=node.next;

}

else{

node.next.prev=node.prev;

node.prev.next=node.next;

}

tail.next=node;

node.prev=tail;

node.next=null;

tail=node;

}

    public static void main(String a[]){

DoublyLinkedListImpl<Integer> dll = new DoublyLinkedListImpl<Integer>();

        dll.addFirst(10);

        dll.addFirst(34);

        dll.addLast(56);

        dll.addLast(364);

dll.removeFirst();

        dll.removeLast();

  

    }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote