You are on page 1of 3

1 class Node {

2 private int item; //Data item


3 private Node next; //Reference to the next Node
4
5 public Node(){
6 this(-1,null);
7 }
8
9 public Node (int item) {
10 this.item = item;
11 this.next = null;
12 }
13
14 public Node(int item, Node next) {
15 this.item = item;
16 this.next = next; //Refer to the 'next' node.
17 }
18
19 public void setNext(Node next) {
20 this.next=next;
21 }
22
23 public Node getNext() {
24 return next;
25 }
26
27 public int getItem() {
28 return item;
29 }
30 }
31
32 public class LinkedList {
33
34 Node head; // First element in LL
35 Node tail; // Last element in LL
36
37 // Initialization of LL
38 public void LinkedList() {
39 head = tail = null;
40 }
41
42 public boolean isEmpty() {
43 return head == null;
44 }
45
46 public void insertBeginning(int item) {
47 Node temp = new Node(item); // create new node
48 // make next of new node to head
49 // reset head to new node
50 //if(tail == null)
51 // tail = head;
52 }
53
54 public void insertEnd(int item) {
55 Node newNode = new Node(item); //create new node
56 //Set the New node to refer to whatever tail is currently pointing to (NULL)
57 //Set the current tail node refer to the new Node
58 //Reset the tail to the new node
59 }
60
61 //Insertion at Middle - after the given node
62 public void insertAfter(Node p, int item) {
63 Node newNode = new Node(item);//create new node
64 // make next of new node to next of p
65 // set p’s next to new node
66 //See if we have to reset tail
67 }
68
69 //Insertion at Middle - before the given node
70 public void insertBefore(Node ref, int item) {
71
72 //Find Previous Node to the Node Ref.
73
74 //Create New Node
75 //make next of new node refer to Node ref.
76 //Make the previous node refer to the new node;
77 //Check if user is inserting this as first node and if so reset Head to the
newNode;
78
79 }
80
81 public void delBeginning() {
82 //If list is empty, nothing to do
83 //If head== tail, there is only one node in the list, so reset tail also;
84 //Anycase Reset the head to its next node;
85 }
86
87 public void delete (Node n) throws Exception {
88 // if (isEmpty()) throw Exception ("List is Empty for Deletion to happen");
89
90 // Set two temp values - prev and cur = Null;
91
92
93 //Traverse from head to the Node 'n' and keep track of the previous node to
'n'
94
95 // if(prev == null) n is a head node; so set head to its next node;
96 // otherwise set prev.setNext(cur.getNext());
97
98 //if(tail == cur) tail = prev; //Node 'n' is a tail node.
99 }
100
101 //Delete the End node.
102 public void delEnd() {
103 //If list is not empty
104 //Find the previous node of the last node;
105 //Reset the reference in the previous node to the reference in the last
node
106 //Reset the tail to refer to the last but previous node;
107
108 //If list is empty
109 //This means there is only node in the list;
110 //So both head and tail will refer to the same node;
111 }
112
113 //Deletion in the middle - After the given node
114 public void delAfter(Node n) throws Exception {
115 //Findout what Node n's next is referring to - if it is Null, throw an exception
116 //Otherwise check if it is referring to tail, and if yes reset tail to n;
117 //Otherwise set n to refer to next node;
118 }
119
120 public void delBefore(Node n) throws Exception {
121 //If 'n' is head node, throw exception, saying there does not exist any
prior to this node
122
123 //Find the node previous to 'n' as 'prev1'
124
125
126 //If prev1 is head node, reset head to 'n'.
127 //Otherwise Find the node previous to 'prev1' as 'prev2'
128
129 //Reset the reference of 'prev2' to 'n'
130 }
131
132 public void traverse() {
133 if (!isEmpty())
134 {
135
136 Node tmp = head;
137 do {
138 System.out.println (tmp.getItem());
139 tmp = tmp.getNext();
140 } while (tmp!= null);
141 }
142 else
143 System.out.println ("List is Empty");
144 }
145
146 public Node findNode(int x) throws Exception
147 {
148 if (!isEmpty())
149 {
150 Node tmp = head;
151 do
152 {
153 if (tmp.getItem()== x) return tmp;
154 else tmp = tmp.getNext();
155 } while (tmp!=null);
156 throw new Exception ("Node not Found");
157 }
158 else throw new Exception ("List is Empty");
159 }
160
161 public Node findPreviousNode (Node ref)
162 {
163 Node prev = null;
164 Node curr = head;
165
166 while (curr!=null)
167 {
168 if (curr == ref) break; //We have found the node
169 else
170 {
171 prev=curr;
172 curr=curr.getNext();
173 }
174 }
175 return prev;
176 }
177
178 public static void main (String[] args) throws Exception
179 {
180 LinkedList ll = new LinkedList();
181 ll.insertBeginning(5);
182 Node found = ll.findNode(5);
183 ll.insertAfter(found, 6);
184 found = ll.findNode(6);
185 ll.insertBefore(found, 7);
186 ll.insertEnd(8);
187 ll.traverse();
188
189 /* Try for these cases also
190 ll.delete(found);
191 ll.delAfter(found);
192 ll.delBefore(found);
193
194 ll.delBeginning();
195 ll.delEnd(); */
196
197 }
198 }

You might also like