Write a program that demonstrate the use of Single Link List / Singly Link List.
Node 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
| public class Node {
// instance variable
public int data; // data item, can be of any type e.g. student, book etc.
public Node next; // next link in list
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node(int id) // constructor
{
data = id; // initialize data
next = null; // (if not initialized ‘next’ is automatically set to null)
}
public void displayLink() // display the link
{
System.out.print("Data : " + data);
}
}
|
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
| public class Single_Link_List {
// instance variable
Node header;
// constructor
public Single_Link_List() {
header = null;
}
public Node getHeader() {
return header;
}
public void insert_at_Beginning(int data) {
Node newNode = new Node(data);
if (header == null) {
header = 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--;
if (pos == 1) {
insert_at_Beginning(data);
}
while (pos > 1) {
if (temp == null) {
throw new NoSuchElementException("Not enough elements in the list.");
} else {
--pos;
}
temp = temp.getNext();
}
newNode.setNext(temp.getNext());
temp.setNext(newNode);
}
public void insert_at_End(int data) {
Node newNode = new Node(data);
Node temp;
if (header == null) {
header = newNode;
} else {
temp = header;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(newNode);
}
}
public int delete_at_Beginning() {
if (isEmpty()) {
System.out.println("Error: Invalid operation! List is Empty");
return -1;
} else {
int temp = header.getData();
header = header.getNext();
return temp;
}
}
public void delete_at_Position(int pos) {
Node temp = header;
if (isEmpty()) {
System.out.println("Error: Invalid operation! List is Empty");
} else {
pos--;
while (--pos != 0) {
temp = temp.getNext();
}
temp.setNext(temp.getNext().getNext());
}
}
public void delete_at_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
40
| public class test_class {
public static void main(String[] args) {
Single_Link_List ll = new 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_at_Beginning();
ll.traverse();
System.out.println("");
System.out.println("\nDelete At Postion!");
ll.delete_at_Position(3);
ll.traverse();
System.out.println("");
System.out.println("\nDelete At End!");
ll.delete_at_End();
ll.traverse();
System.out.println("");
}
}
|