Applications of Linked List
Source Code
// Write a C program for reversing the singly linked list
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node *next;
};
void insert(struct Node **head, int data)
{
struct Node *nn = (struct Node *)malloc(sizeof(struct Node));
nn->data = data;
nn->next = NULL;
if (*head == NULL)
{
*head = nn;
}
else
{
struct Node *temp = *head;
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = nn;
}
}
void display(struct Node *head)
{
struct Node *temp = head;
while (temp != NULL)
{
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
void reverse(struct Node **head)
{
struct Node *prev = NULL;
struct Node *curr = *head;
struct Node *next = NULL;
while (curr != NULL)
{
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
*head = prev;
}
int main()
{
struct Node *head = NULL;
insert(&head, 10);
insert(&head, 20);
insert(&head, 30);
insert(&head, 40);
insert(&head, 50);
display(head);
reverse(&head);
display(head);
return 0;
}