Results 1 to 3 of 3
  1. #1
    auhunter is offline Member
    Join Date
    Apr 2011
    Posts
    2
    Rep Power
    0

    Default Linked List help

    Hello, I'm wanting to make sure I'm doing this correctly. I'm attempting to turn the below code for a single linked list into a double linked list. The first one is the code we are given, and the 2nd is the modifications I've made to it thus far. Am I doing it correctly? Also, any advice for how to turn the single linked list into a circular linked list would also be very beneficial.

    public class MyLinkedList<E> extends MyAbstractList<E> {

    private Node<E> head, tail;



    /** Create a default list */

    public MyLinkedList() {

    }



    /** Create a list from an array of objects */

    public MyLinkedList(E[] objects) {

    super(objects);

    }



    /** Return the head element in the list */

    public E getFirst() {

    if (size == 0) {

    return null;

    }

    else {

    return head.element;

    }

    }



    /** Return the last element in the list */

    public E getLast() {

    if (size == 0) {

    return null;

    }

    else {

    return tail.element;

    }

    }



    /** Add an element to the beginning of the list */

    public void addFirst(E e) {

    Node<E> newNode = new Node<E>(e); // Create a new node
    newNode.next = head; // link the new node with the head
    head = newNode; // head points to the new node
    size++; // Increase list size


    if (tail == null) // the new node is the only node in list
    tail = head;

    }



    /** Add an element to the end of the list */

    public void addLast(E e) {

    Node<E> newNode = new Node<E>(e); // Create a new for element e


    if (tail == null) {

    head = tail = newNode; // The new node is the only node in list
    }

    else {

    tail.next = newNode; // Link the new with the last node
    tail = tail.next; // tail now points to the last node
    }



    size++; // Increase size
    }





    /** Add a new element at the specified index in this list
    * The index of the head element is 0 */

    public void add(int index, E e) {

    if (index == 0) {

    addFirst(e);

    }

    else if (index >= size) {

    addLast(e);

    }

    else {

    Node<E> current = head;

    for (int i = 1; i < index; i++) {

    current = current.next;

    }

    Node<E> temp = current.next;

    current.next = new Node<E>(e);

    (current.next).next = temp;

    size++;

    }

    }



    /** Remove the head node and
    * return the object that is contained in the removed node. */

    public E removeFirst() {

    if (size == 0) {

    return null;

    }

    else {

    Node<E> temp = head;

    head = head.next;

    size--;

    if (head == null) {

    tail = null;

    }

    return temp.element;

    }

    }



    /** Remove the last node and
    * return the object that is contained in the removed node. */

    public E removeLast() {

    if (size == 0) {

    return null;

    }

    else if (size == 1) {

    Node<E> temp = head;

    head = tail = null;

    size = 0;

    return temp.element;

    }

    else {

    Node<E> current = head;



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

    current = current.next;

    }



    Node<E> temp = tail;

    tail = current;

    tail.next = null;

    size--;

    return temp.element;

    }

    }



    /** Remove the element at the specified position in this list.
    * Return the element that was removed from the list. */

    public E remove(int index) {

    if (index < 0 || index >= size) {

    return null;

    }

    else if (index == 0) {

    return removeFirst();

    }

    else if (index == size - 1) {

    return removeLast();

    }

    else {

    Node<E> previous = head;



    for (int i = 1; i < index; i++) {

    previous = previous.next;

    }



    Node<E> current = previous.next;

    previous.next = current.next;

    size--;

    return current.element;

    }

    }



    /** Override toString() to return elements in the list */

    public String toString() {

    StringBuilder result = new StringBuilder("[");



    Node<E> current = head;

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

    result.append(current.element);

    current = current.next;

    if (current != null) {

    result.append(", "); // Separate two elements with a comma
    }

    else {

    result.append("]"); // Insert the closing ] in the string
    }

    }



    return result.toString();

    }



    /** Clear the list */

    public void clear() {

    head = tail = null;

    }



    /** Return true if this list contains the element o */

    public boolean contains(E e) {

    System.out.println("Implementation left as an exercise");

    return true;

    }



    /** Return the element from this list at the specified index */

    public E get(int index) {
    Node<E> temp = head;
    for(int i = 0; i<index;i++){
    temp = temp.next;
    }

    //System.out.println("Implementation left as an exercise");
    return temp.element;

    }

    public E getFromEnd(int index){
    return get(size()-index);
    }



    /** Return the index of the head matching element in this list.
    * Return -1 if no match. */

    public int indexOf(E e) {

    System.out.println("Implementation left as an exercise");

    return 0;

    }



    /** Return the index of the last matching element in this list
    * Return -1 if no match. */

    public int lastIndexOf(E e) {

    System.out.println("Implementation left as an exercise");

    return 0;

    }



    /** Replace the element at the specified position in this list
    * with the specified element. */

    public E set(int index, E e) {

    System.out.println("Implementation left as an exercise");

    return null;

    }



    private static class Node<E> {

    E element;

    Node<E> next;



    public Node(E element) {

    this.element = element;

    }

    }

    }

    public class MyDoubleLinkedList<E> extends MyAbstractList<E> {

    private Node<E> head, tail;



    /** Create a default list */

    public MyDoubleLinkedList() {

    }



    /** Create a list from an array of objects */

    public MyDoubleLinkedList(E[] objects) {

    super(objects);

    }



    /** Return the head element in the list */

    public E getFirst() {

    if (size == 0) {

    return null;

    }

    else {

    return head.element;

    }

    }



    /** Return the last element in the list */

    public E getLast() {

    if (size == 0) {

    return null;

    }

    else {

    return tail.element;

    }

    }



    /** Add an element to the beginning of the list */

    public void addFirst(E e) {

    Node<E> newNode = new Node<E>(e); // Create a new node
    newNode.next = head; // link the new node with the head
    head = newNode; // head points to the new node
    head.next.previous = head;
    size++; // Increase list size


    if (tail == null) // the new node is the only node in list
    tail = head;

    }



    /** Add an element to the end of the list */

    public void addLast(E e) {

    Node<E> newNode = new Node<E>(e); // Create a new for element e

    if (tail == null) {

    head = tail = newNode; // The new node is the only node in list
    }

    else {

    tail.next = newNode; // Link the new with the last node
    tail.next.previous = tail;
    tail = tail.next; // tail now points to the last node
    }



    size++; // Increase size
    }





    /** Add a new element at the specified index in this list
    * The index of the head element is 0 */

    public void add(int index, E e) {

    if (index == 0) {

    addFirst(e);

    }

    else if (index >= size) {

    addLast(e);

    }

    else {

    Node<E> current = head;

    for (int i = 1; i < index; i++) {

    current = current.next;

    }

    Node<E> temp = current.next;

    current.next = new Node<E>(e);

    current.next.previous = current;

    (current.next).next = temp;

    temp.previous = current.next;

    size++;

    }

    }



    /** Remove the head node and
    * return the object that is contained in the removed node. */

    public E removeFirst() {

    if (size == 0) {

    return null;

    }

    else {

    Node<E> temp = head;

    head = head.next;

    head.previous = null;

    size--;

    if (head == null) {

    tail = null;

    }

    return temp.element;

    }

    }



    /** Remove the last node and
    * return the object that is contained in the removed node. */

    public E removeLast() {

    if (size == 0) {

    return null;

    }

    else if (size == 1) {

    Node<E> temp = head;

    head = tail = null;

    size = 0;

    return temp.element;

    }

    else {

    Node<E> current = head;



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

    current = current.next;

    }



    Node<E> temp = tail;

    tail = current;

    tail.next = null;

    size--;

    return temp.element;

    }

    }



    /** Remove the element at the specified position in this list.
    * Return the element that was removed from the list. */

    public E remove(int index) {

    if (index < 0 || index >= size) {

    return null;

    }

    else if (index == 0) {

    return removeFirst();

    }

    else if (index == size - 1) {

    return removeLast();

    }

    else {

    Node<E> previous = head;



    for (int i = 1; i < index; i++) {

    previous = previous.next;

    }



    Node<E> current = previous.next;

    previous.next = current.next;

    current.next.previous = previous;

    size--;

    return current.element;

    }

    }



    /** Override toString() to return elements in the list */

    public String toString() {

    StringBuilder result = new StringBuilder("[");



    Node<E> current = head;

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

    result.append(current.element);

    current = current.next;

    if (current != null) {

    result.append(", "); // Separate two elements with a comma
    }

    else {

    result.append("]"); // Insert the closing ] in the string
    }

    }



    return result.toString();

    }



    /** Clear the list */

    public void clear() {

    head = tail = null;

    }



    /** Return true if this list contains the element o */

    public boolean contains(E e) {

    System.out.println("Implementation left as an exercise");

    return true;

    }



    /** Return the element from this list at the specified index */

    public E get(int index) {
    Node<E> temp = head;
    for(int i = 0; i<index;i++){
    temp = temp.next;
    }

    //System.out.println("Implementation left as an exercise");
    return temp.element;

    }

    public E getFromEnd(int index){
    return get(size()-index);
    }



    /** Return the index of the head matching element in this list.
    * Return -1 if no match. */

    public int indexOf(E e) {

    System.out.println("Implementation left as an exercise");

    return 0;

    }



    /** Return the index of the last matching element in this list
    * Return -1 if no match. */

    public int lastIndexOf(E e) {

    System.out.println("Implementation left as an exercise");

    return 0;

    }



    /** Replace the element at the specified position in this list
    * with the specified element. */

    public E set(int index, E e) {

    System.out.println("Implementation left as an exercise");

    return null;

    }



    private static class Node<E> {

    E element;

    Node<E> next, previous;



    public Node(E element) {

    this.element = element;

    }

    }

    }

  2. #2
    DarrylBurke's Avatar
    DarrylBurke is offline Member
    Join Date
    Sep 2008
    Location
    Madgaon, Goa, India
    Posts
    11,184
    Rep Power
    19

    Default

    Not enough code. I printed it out on rice paper, fried and ate it and I'm still hungry.

    db

    -- Read How to ask questions the smart way

  3. #3
    auhunter is offline Member
    Join Date
    Apr 2011
    Posts
    2
    Rep Power
    0

Similar Threads

  1. help with linked list
    By TopNFalvors in forum New To Java
    Replies: 8
    Last Post: 03-28-2011, 04:31 PM
  2. Replies: 4
    Last Post: 02-21-2011, 09:34 AM
  3. Linked list inside a linked list
    By viperlasson in forum New To Java
    Replies: 5
    Last Post: 07-26-2010, 11:15 PM
  4. Linked List help
    By alpdog14 in forum New To Java
    Replies: 3
    Last Post: 10-07-2009, 09:34 PM
  5. Linked List integer list
    By igniteflow in forum Advanced Java
    Replies: 1
    Last Post: 12-10-2008, 08:53 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •