Pages

Wednesday, June 15, 2016

Single Double Ended Link List / Singly Double Ended Link List

Write a program that demonstrate the use of Single Double Ended Link List / Singly Double Ended Link List


Link List Class:

1. Insert in the List
2. Delete in the List
3. Traverse in the List

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
public class Double_Ended_Single_Link_List {

    Node header;
    Node tail;

    public Double_Ended_Single_Link_List() {// constructor
        header = null;
    }

    public Node getHeader() {
        return header;
    }

    public Node getTail() {
        return tail;
    }

    public void insert_at_Beginning(int data) {
        Node newNode = new Node(data);
        if (header == null) {
            header = newNode;
            tail = newNode;
        } else {
            newNode.setNext(header);
            header = newNode;
        }
    }

    public void insert_at_Position(int data, int pos) {
        Node newNode = new Node(data);
        Node temp = header;
        pos--;
        while (pos > 0) {
            temp = temp.getNext();
            if (temp == null) {
                System.out.println("Not enough elements in the list.");
            } else {
                --pos;
            }
        }
        newNode.setNext(temp.getNext());
        temp.setNext(newNode);
        
    }

    public void insert_at_End(int data) {
        Node newNode = new Node(data);
        Node temp = header;
        if (header == null) {
            header = newNode;
            tail = newNode;
        } else {
            while (temp.getNext() != null) {
                temp = temp.getNext();
            }
            tail.setNext(newNode);
            tail = newNode;
        }
    }

    public int delete_from_Beginning() {
        if (isEmpty()) {
            System.out.println("Error: Invalid operation! List is Empty");
            return -1;
        } else if (header.getNext() == null) {
            header = null;
            tail = null;
            return 0;
        } else {
            header = header.getNext();
            return 0;
        }
    }

    public void delete_from_position(int pos) {
        if (isEmpty()) {
            System.out.println("Error: Invalid operation! List is Empty");
        } else {
            Node temp = header;
            pos--;
            while (--pos != 0) {
                temp = temp.getNext();
            }
            temp.setNext(temp.getNext().getNext());
        }
    }

    public void delete_from_End() {
        Node temp = header.getNext();
        Node prev = header;

        if (header == null) {
            System.out.println("Error: Invalid operation! List is Empty");
        } else {
            while (temp.getNext() != null) {

                temp = temp.getNext();
                prev = prev.getNext();
            }
            prev.setNext(null);
            temp = null;
        }
    }

    public void traverse() {
        Node temp = header;
        while (temp != null) {
            System.out.print(temp.getData() + " ");
            temp = temp.getNext();
        }
    }

    public boolean isEmpty() {
        return header == null;
    }}


Test Class:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 public class DE_SLL_Test_Class {

public static void main(String[] args) {
        Double_Ended_Single_Link_List ll = new Double_Ended_Single_Link_List();

        System.out.println("Insert At Begining!");
        ll.insert_at_Beginning(23);
        ll.insert_at_Beginning(56);
        ll.traverse();
        System.out.println("");

        System.out.println("\nInsert At End!");
        ll.insert_at_End(100);
        ll.insert_at_End(123);
        ll.traverse();
        System.out.println("");

        System.out.println("\nInsert At any Position!");
        ll.insert_at_Position(321, 3);
        ll.insert_at_Position(4444, 4);
        ll.traverse();
        System.out.println("");

        System.out.println("\nDelete At Begining!");
        ll.delete_from_Beginning();
        ll.traverse();
        System.out.println("");

        System.out.println("\nDelete At Postion!");
        ll.delete_from_position(3);
        ll.traverse();
        System.out.println("");

        System.out.println("\nDelete At End!");
        ll.delete_from_End();
        ll.traverse();
        System.out.println("");
    }
}

No comments:

Post a Comment