Question

Using a doubly linked list, create a list L1 with words from a text file in...

Using a doubly linked list, create a list L1 with words from a text file in Java.

0 0
Add a comment Improve this question Transcribed image text
Answer #1
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FileWords {

    public static void main(String[] args) throws FileNotFoundException {
        String fileName = "input.txt";

        Scanner reader = new Scanner(new File(fileName));

        DoublyLinkedList<String> list = new DoublyLinkedList<>();
        while(reader.hasNext()) {
            list.addLast(reader.next());
        }

        list.display();

        reader.close();
    }

}

=====================

public class DoublyLinkedList<E> {
    private Node<E> header;
    private Node<E> trailer;
    private int size = 0;

    public DoublyLinkedList() {
        header = null;
        trailer = null;
    }

    public int size() {
        return size;
    }

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

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

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

    private void addBetween(E e, Node<E> predecessor, Node<E> successor) {
        Node<E> newest = new Node<>(e, predecessor, successor);
        if(predecessor == null) {
            header = newest;
        } else {
            predecessor.setNext(newest);
        }

        if(successor == null) {
            trailer = newest;
        } else {
            successor.setPrev(newest);
        }
        size++;
    }

    private E remove(Node<E> e) {
        Node<E> predecessor = e.getPrev();
        Node<E> successor = e.getNext();
        if(predecessor == null) {
            header = successor;
        } else {
            predecessor.setNext(successor);
        }
        if(successor == null) {
            trailer = predecessor;
        } else {
            successor.setPrev(predecessor);
        }
        size--;
        if(size == 0) {
            header = trailer = null;
        }
        return e.getElement();
    }

    public void addFirst(E e) {
        if(header == null) {
            addBetween(e, null, null);
        } else {
            addBetween(e, header, header.getNext());
        }
    }

    public void addLast(E e) {
        if(trailer == null) {
            addBetween(e, null, null);
        } else {
            addBetween(e, trailer.getPrev(), trailer);
        }
    }

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

    }

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

    }

    public void reverse() {
        if(isEmpty() || header == trailer) {
            return;
        }
        Node<E> prev = null;
        Node<E> start = header;
        while(start != null) {
            Node<E> next = start.next;
            start.next = prev;
            start.prev = next;
            prev = start;
            start = next;
        }
        trailer = header;
        header = prev; 
    }

    public void display() {
        Node<E> start = header;
        while(start != null) {
            System.out.print(start.element + " ");
            start = start.next;
        }
        System.out.println();
    }

    private static class Node<E> {
        private E element;
        private Node<E> next;
        private Node<E> prev;

        public Node(E e, Node<E> p, Node<E> n) {
            element = e;
            prev = p;
            next = n;
        }

        public E getElement() {
            return element;
        }

        public Node<E> getPrev() {
            return prev;
        }

        public Node<E> getNext() {
            return next;
        }

        public void setPrev(Node<E> n) {
            prev = n;
        }

        public void setNext(Node<E> n) {
            next = n;
        }

    }
}


Please upvote, as i have given the exact answer as asked in question. Still in case of any concerns in code, let me know in comments. Thanks!

Add a comment
Know the answer?
Add Answer to:
Using a doubly linked list, create a list L1 with words from a text file in...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT