struct node {
int data;
struct node* next;
};
void removeDuplicates (struct node* head)
{
struct node* current = head;
struct node* next_next;
if(current == NULL)
return;
while(current->next != NULL){
if(current->data == current->next->data)
{
next_next = current->next->next;
free(current->next);
current->next = next_next;
}
else{
current = current->next;
}
}
}
Category Archives: Linked List
Delete element from Linked List
struct node {
int data;
struct node *next;
};
void deleteNode(struct node *head, struct node *n)
{
if(head == n)
{
if(head->next == NULL){
return;
}
// Node to be deleted is head
head->data = head->next->data;
n = head->next;
head->next = head->next->next;
free(n);
}
// When not first node
struct node *prev = head;
while(prev->next != NULL && prev->next != n)
prev = prev->next;
prev->next = prev->next->next;
free(n);
}
Reverse Linkedlist
Static void reverse (struct node *head){
Node *prev = NULL;
Node *current = *head;
Node *next;
While (current !=NULL){
next = current -> next;
current ->next = prev;
prev = current;
current = next;
}
*head = prev;
}
Add element in Linked List
struct node
{
int data;
struct node *link;
} *head;
void add_beginning (int num) {
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
temp ->data = num;
temp ->link = NULL;
if (head == NULL) {
head = temp;
}
else {
temp ->link = head;
head = temp;
}
}
void add_end (int num) {
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
temp ->data = num;
temp ->link = NULL;
if (head == NULL){
head = temp;
}
else {
right = (struct node *)head;
while(right ->link != NULL)
right = right ->link;
right ->link = temp;
}
}
Void add_middle (int c, int num){
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
temp ->data = num;
temp ->link = NULL;
if (head == NULL){
head = temp;
}
else {
struct node *right, *right1;
right = head;
right1 = head;
for (int i = 0; i <c; i++)
right = right ->link;
right1 = right ->next;
right ->next = temp;
temp ->next = right1;
}
}