Table of Contents
show
Implementation of Singly Linked List and its operations
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
struct node *start = NULL;
struct node *create_ll(struct node *);
struct node *display(struct node *);
struct node *insert_beg(struct node*);
struct node *insert_end(struct node*);
struct node *insert_before(struct node*);
struct node *insert_after(struct node*);
struct node *delete_beg(struct node*);
struct node *delete_end(struct node*);
struct node *delete_node(struct node*);
struct node *delete_after(struct node*);
struct node *delete_list(struct node*);
struct node *sort_list(struct node*);
int main (int argc, char *argv[])
{
int option;
do
{
printf("\n\n****MAIN MENU ****");
printf("\n 1: Create a list");
printf("\n 2: Display the list");
printf("\n 3: Insert a node at the beginning");
printf("\n 4: Insert a node at the end");
printf("\n 5: Insert a node before a given node");
printf("\n 6: Insert a node after a given node");
printf("\n 7: Delete the first node");
printf("\n 8: Delete the last node");
printf("\n 9: Delete the given node");
printf("\n 10: Delete a node after a given node");
printf("\n 11:Delete the entire list");
printf("\n 12: Sort the list");
printf("\n 13: Exit");
printf("Enter your option");
scanf("%d",&option);
switch(option)
{
case 1:
start = create_ll(start);
printf("\n Linked list created");
break;
case 2:
start= display(start);
break;
case 3:
start = insert_beg(start);
break;
case 4:
start = insert_end(start);
break;
case 5:
start= insert_before(start);
break;
case 6:
start = insert_after(start);
break;
case 7:
start = delete_beg(start);
break;
case 8:
start = delete_end(start);
break;
case 9:
start = delete_node(start);
break;
case 10:
start = delete_after(start);
break;
case 11:
start = delete_list(start);
printf("\n Linked List Deleted");
case 12:
start = sort_list(start);
break;
}
}while(option !=13);
getch();
return 0;
}
struct node *create_ll(struct node *next)
{
struct node *new_node,*ptr;
int num;
printf("\n Enter -1 to end");
printf("\n Enter the data");
scanf("%d",&num);
while(num != -1)
{
new_node = (struct node*) malloc (sizeof(struct node*));
new_node->data = num;
if(start ==NULL)
{
new_node->next = NULL;
start = new_node;
}
else
{
ptr = start;
while(ptr->next !=NULL)
{
ptr=ptr->next;
}
ptr->next = new_node;
new_node->next = NULL;
}
printf("Enter the data");
scanf("%d",&num);
}
return start;
}
struct node *display(struct node *start)
{
struct node *ptr;
ptr = start;
while(ptr != NULL)
{
printf("\t %d",ptr->data);
ptr = ptr->next;
}
return start;
}
struct node *insert_beg(struct node *start)
{
struct node *new_node;
int num;
printf("\nEnter the data");
scanf("%d",&num);
new_node =(struct node*) malloc (sizeof(struct node*));
new_node->data = num;
new_node->next = start;
start = new_node;
return start;
}
struct node *insert_end(struct node *start)
{
struct node *new_node,*ptr;
int num;
printf("\nEnter the data");
scanf("%d",&num);
new_node =(struct node*) malloc (sizeof(struct node*));
new_node->data = num;
new_node->next = NULL;
ptr = start;
while(ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = new_node;
return start;
}
struct node *insert_before(struct node *start)
{
struct node *new_node, *ptr, *preptr;
int num,val;
printf("\n Enter the data:");
scanf("%d",&num);
printf("\n Enter the value before which the data has to be inserted:");
scanf("%d",&val);
new_node =(struct node*) malloc (sizeof(struct node*));
new_node->data = num;
ptr = start;
while(ptr->data != val)
{
preptr= ptr;
ptr= ptr->next;
}
preptr->next = new_node;
new_node->next = ptr;
return start;
}
struct node *insert_after(struct node *start)
{
struct node *new_node, *ptr, *preptr;
int num,val;
printf("\n Enter the data:");
scanf("%d",&num);
printf("\n Enter the value after which the data has to be inserted:");
scanf("%d",&val);
new_node =(struct node*) malloc (sizeof(struct node*));
new_node->data = num;
ptr = start;
while(preptr->data !=val)
{
preptr = ptr;
ptr = ptr->next;
}
preptr->next = new_node;
new_node->next = ptr;
return start;
}
struct node *delete_beg(struct node *start)
{
struct node *ptr;
ptr = start;
start = start ->next;
free(ptr);
return start;
}
struct node *delete_end(struct node *start)
{
struct node *ptr,*preptr;
ptr = start;
while(ptr->next != NULL)
{
preptr = ptr;
ptr= ptr->next;
}
preptr->next = NULL;
free(ptr);
return start;
}
struct node *delete_node(struct node *start)
{
struct node *ptr, *preptr;
int val;
printf("\n Enter the value of the node to be deleted");
scanf("%d",&val);
ptr = start;
if(ptr->data == val)
{
start = delete_beg(start);
return start;
}
else
{
while(ptr->data !=val)
{
preptr = ptr;
ptr = ptr->next;
}
preptr->next = ptr->next;
free(ptr);
return (start);
}
}
struct node *delete_after(struct node *start)
{
struct node *ptr, *preptr;
int val;
printf("\n Enter the value of the node after which the node to be deleted");
scanf("%d",&val);
ptr = start;
preptr = ptr;
while(preptr->data != val)
{
preptr = ptr;
ptr = ptr->next;
}
preptr->next = ptr->next;
free(ptr);
return (start);
}
struct node *delete_list(struct node *start)
{
struct node *ptr;
if(start !=NULL)
{
ptr = start;
while (ptr != NULL)
{
printf("\n %d is to be deleted next ",ptr->data);
start= delete_beg(ptr);
ptr = start;
}
}
return (start);
}
struct node *sort_list(struct node *start)
{
struct node *ptr1,*ptr2;
int temp;
ptr1 = start;
while(ptr1->next != NULL)
{
ptr2 = ptr1->next;
while(ptr2 != NULL)
{
if (ptr1->data >ptr2->data)
{
temp = ptr1->data;
ptr1->data = ptr2->data;
ptr2->data = temp;
}
ptr2 = ptr2->next;
}
ptr1=ptr1->next;
}
return start;
}
Output
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option1
Enter -1 to end
Enter the data 32
Enter the data1
Enter the data3
Enter the data4
Enter the data2
Enter the data26
Enter the data-1
Linked list created
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
32 1 3 4 2 26
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option3
Enter the data45
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
45 32 1 3 4 2 26
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option4
Enter the data15
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
45 32 1 3 4 2 26 15
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option5
Enter the data:7
Enter the value before which the data has to be inserted:3
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
45 32 1 7 3 4 2 26 15
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option6
Enter the data:6
Enter the value after which the data has to be inserted:3
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
45 32 1 7 3 6 4 2 26 15
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option12
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
1 2 3 4 6 7 15 26 32 45
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option 7
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
2 3 4 6 7 15 26 32 45
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option 8
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option 2
2 3 4 6 7 15 26 32
****MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option 9
Enter the value of the node to be deleted 6
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option2
2 3 4 7 15 26 32
***MAIN MENU ****
1: Create a list
2: Display the list
3: Insert a node at the beginning
4: Insert a node at the end
5: Insert a node before a given node
6: Insert a node after a given node
7: Delete the first node
8: Delete the last node
9: Delete the given node
10: Delete a node after a given node
11:Delete the entire list
12: Sort the list
13: ExitEnter your option 11
2 is to be deleted next
3 is to be deleted next
4 is to be deleted next
7 is to be deleted next
15 is to be deleted next
26 is to be deleted next
32 is to be deleted next
Linked List Deleted
Views: 0