-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathdd14
107 lines (91 loc) · 2.11 KB
/
dd14
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
// Java Program to remove duplicates
// from a sorted linked list
class GFG
{
/* Link list node */
static class Node
{
int data;
Node next;
};
// The function removes duplicates
// from a sorted list
static Node removeDuplicates(Node head)
{
/* Pointer to store the pointer
of a node to be deleted*/
Node to_free;
/* do nothing if the list is empty */
if (head == null)
return null;
/* Traverse the list till last node */
if (head.next != null)
{
/* Compare head node with next node */
if (head.data == head.next.data)
{
/* The sequence of steps is important.
to_free pointer stores the next of head
pointer which is to be deleted.*/
to_free = head.next;
head.next = head.next.next;
removeDuplicates(head);
}
/* This is tricky: only advance if no deletion */
else
{
removeDuplicates(head.next);
}
}
return head;
}
/* UTILITY FUNCTIONS */
/* Function to insert a node at the beginning
of the linked list */
static Node push(Node head_ref,
int new_data)
{
/* allocate node */
Node new_node = new Node();
/* put in the data */
new_node.data = new_data;
/* link the old list off the new node */
new_node.next = (head_ref);
/* move the head to point to the new node */
(head_ref) = new_node;
return head_ref;
}
/* Function to print nodes in a given linked list */
static void printList(Node node)
{
while (node != null)
{
System.out.print(" " + node.data);
node = node.next;
}
}
/* Driver code*/
public static void main(String args[])
{
/* Start with the empty list */
Node head = null;
/* Let us create a sorted linked list
to test the functions
Created linked list will be 11.11.11.13.13.20 */
head = push(head, 20);
head = push(head, 13);
head = push(head, 13);
head = push(head, 11);
head = push(head, 11);
head = push(head, 11);
System.out.println("Linked list before" +
" duplicate removal ");
printList(head);
/* Remove duplicates from linked list */
head = removeDuplicates(head);
System.out.println("\nLinked list after" +
" duplicate removal ");
printList(head);
}
}
// This code is contributed by Arnab Kundu