Linked-List Operations in C
This code demonstrates various linked-list operations in C.
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
} * head, *temp, *travel, *ptr;
void print()
{
travel = head;
if (travel == NULL)
{
printf("Linked-List is empty.\\n");
}
else
{
while (travel != NULL)
{
printf("%d ", travel->data);
travel = travel->next;
}
}
}
void search(int key)
{
int flag = 0;
travel = head;
if (travel == NULL)
{
printf("Linked-List is empty.\\n");
}
else
{
while (travel != NULL)
{
if ((travel->data) == key)
flag = 1;
else
flag = 0;
travel = travel->next;
}
}
if (flag = 1)
printf("\\nElement found..");
else
printf("\\nElement not found");
}
void add_at_begin(int data)
{
ptr = (struct node *)malloc(sizeof(struct node));
ptr->data = data;
ptr->next = NULL;
ptr->next = head;
head = ptr;
}
void add_at_last(int data)
{
struct node *new_node = (struct node *)malloc(sizeof(struct node));
struct node *last = head;
new_node->data = data;
new_node->next = NULL;
if (head == NULL)
{
head = new_node;
return;
}
while (last->next != NULL)
last = last->next;
last->next = new_node;
}
void add_at_pos()
{
int n, t;
printf("\\nEnter the data of node that after you want to add the node:");
scanf("%d", &n);
printf("Enter the data to add in new node::");
scanf("%d", &t);
int loc = n;
ptr = (struct node *)malloc(sizeof(struct node));
ptr->data = t;
temp = head;
while (temp->data != loc)
{
temp = temp->next;
}
ptr->next = temp->next;
temp->next = ptr;
}
void add_before()
{
struct node *cur, *pre;
cur = head;
pre = head;
int loc, new_data;
ptr = (struct node *)malloc(sizeof(struct node));
printf("\\nEnter the data that before you want to add the node::");
scanf("%d", &loc);
printf("Enter the data to add in new node::");
scanf("%d", &new_data);
ptr->data = new_data;
while (cur->data != loc)
{
pre = cur;
cur = cur->next;
}
pre->next = ptr;
ptr->next = cur;
}
void del_first()
{
if (head == NULL)
{
printf("\\nLinked-List is Empty..");
}
else
{
ptr = head;
head = head->next;
//free(ptr);
//ptr= NULL;
}
}
void del_last()
{
struct node *cur, *pre;
cur = head;
pre = head;
if (head == NULL)
printf("Linked-list is empty");
else if (head->next == NULL)
{
free(head);
head = NULL;
}
while (cur->next != NULL)
{
pre = cur;
cur = cur->next;
}
pre->next = NULL;
free(cur);
}
void del_node()
{
struct node *cur, *pre;
int data;
printf("\\nEnter the data of node that you want to delete::");
scanf("%d", &data);
cur = head;
pre = head;
while ((cur->data) != data)
{
pre = cur;
cur = cur->next;
}
pre->next = cur->next;
free(cur);
}
void main()
{
int choice, n, t, key;
while (1)
{
printf("\\n1.Insert a node at Start");
printf("\\n2.Insert a node at Last");
printf("\\n3.Insert a node at before data:");
printf("\\n4.Insert a node at after data:");
printf("\\n5.Display Linked-List");
printf("\\n6.Delete first node from Linked-List");
printf("\\n7.Delete Last node from Linked-List");
printf("\\n8.Delete Specific Node:");
printf("\\n9.Exit");
scanf("%d", &choice);
switch (choice)
{
case 1:
printf("Enter the data to add in new node::");
scanf("%d", &t);
add_at_begin(t);
break;
case 2:
printf("Enter the data to add in new node::");
scanf("%d", &t);
add_at_last(t);
break;
case 3:
add_before();
break;
case 4:
add_at_pos();
break;
case 5:
print();
break;
case 6:
del_first();
break;
case 7:
del_last();
break;
case 8:
del_node();
break;
case 9:
exit(0);
default:
printf("\\n\\aEnter valid choice");
break;
}
}
}
This code implements various operations on a singly linked-list, including inserting nodes at the start and end, before and after specific data, and deleting nodes.
Feel free to experiment with this code and understand how each linked-list operation
Output::
ReplyDelete1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit1
Enter the data to add in new node::12
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit2
Enter the data to add in new node::66
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit2
Enter the data to add in new node::58
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit5
12 66 58
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit3
Enter the data that before you want to add the node::66
Enter the data to add in new node::54
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit4
Enter the data of node that after you want to add the node:58
Enter the data to add in new node::89
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit5
12 54 66 58 89
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit6
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit5
54 66 58 89
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit7
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit5
54 66 58
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit8
Enter the data of node that you want to delete::66
1.Insert a node at Start
2.Insert a node at Last
3.Insert a node at before data:
4.Insert a node at after data:
5.Display Linked-List
6.Delete first node from Linked-List
7.Delete Last node from Linked-List
8.Delete Specific Node:
9.Exit9