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
|
class LinkedList {
// create an object of Node class
// represent the head of the linked list
Node head;
// static inner class
static class Node {
int value;
// connect each node to next node
Node next;
Node(int d) {
value = d;
next = null;
}
}
public static void main(String[] args) {
// create an object of LinkedList
LinkedList linkedList = new LinkedList();
// assign values to each linked list node
linkedList.head = new Node(1);
Node second = new Node(2);
Node third = new Node(3);
// connect each node of linked list to next node
linkedList.head.next = second;
second.next = third;
// print the linked list
Node pointer = linkedList.head;
System.out.print("LinkedList: " );
while (pointer != null) {
System.out.print(pointer.value + " ");
pointer = pointer.next;
}
// Find the middle element
Node ptr1 = linkedList.head;
Node ptr2 = linkedList.head;
while (ptr1.next != null) {
// increase the ptr1 by 2 and ptr2 by 1
// if ptr1 points to last element
// ptr2 will points to middle element
ptr1 = ptr1.next;
if(ptr1.next !=null) {
ptr1 = ptr1.next;
ptr2 = ptr2.next;
}
}
System.out.println("\nMiddle Element: " + ptr2.value);
}
}
|