Programming with C

⌘K
  1. Home
  2. Docs
  3. Programming with C
  4. Structures
  5. Implementation of Singly Linked List

Implementation of Singly Linked List

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

How can we help?

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments