Tuesday, 22 August 2023

Implement all operations on the doubly linked list.

Doubly Linked-List Operations

Doubly Linked-List Operations in C

This code demonstrates various operations on a doubly linked-list in C.


#include <stdio.h>
#include <stdlib.h>

struct node
{
    struct node *prev;
    int data;
    struct node *next;
} * head, *travel;

void print()
{
    travel = head;
    if (travel == NULL)
    {
        printf("\\nLinked-List is empty.\\n");
    }
    while (travel != NULL)
    {
        printf("%d ", travel->data);
        travel = travel->next;
    }
}

void add_at_begin(int data)
{
    struct node *new_node;
    new_node = (struct node *)malloc(sizeof(struct node));
    new_node->prev = NULL;
    new_node->data = data;
    new_node->next = NULL;
    if (head == NULL)
    {
        head = new_node;
        return;
    }
    new_node->next = head;
    head->prev = new_node;
    head = new_node;
}

void add_at_last(int data)
{
    struct node *new_node;
    new_node = (struct node *)malloc(sizeof(struct node));
    struct node *last = head;
    new_node->prev = NULL;
    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;
    new_node->prev = last;
}

void add_before()
{
    int loc, new_data;
    struct node *cur, *pre, *new_node;
    cur = head;
    pre = head;
    new_node = (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);
    new_node->data = new_data;
    while (cur->data != loc)
    {
        pre = cur;
        cur = cur->next;
    }
    pre->next = new_node;
    new_node->prev = pre;
    new_node->next = cur;
    cur->prev = new_node;
}

void add_after()
{
    int loc, new_data;
    struct node *new_node, *last;
    new_node = (struct node *)malloc(sizeof(struct node));
    printf("\\nEnter the data that after you want to add the node::");
    scanf("%d", &loc);
    printf("Enter the data to add in new node::");
    scanf("%d", &new_data);
    last = head;
    new_node->prev = NULL;
    new_node->data = new_data;
    new_node->next = NULL;
    while (last->data != loc)
    {
        last = last->next;
    }
    new_node->next = last->next;
    last->next = new_node;
    new_node->prev = last;
}

void del_first()
{
    if (head == NULL)
    {
        printf("\\nLinked-List is Empty..");
    }
    else
    {
        travel = head;
        head = head->next;
    }
}

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 DeleteBefore()
{
    struct node *cur=head,*pre=head;
    int data;
    printf("\\nEnter the data of node that before you want to delete::");
    scanf("%d", &data);
    while(cur->data!=data)
    {
        pre=cur;
        cur=cur->next;
    }
    pre->next=cur->next;
    free(cur);
    cur=NULL;
}

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.Delete Node Before Data:");
        printf("\\n10.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_after();
            break;
        case 5:
            print();
            break;
        case 6:
            del_first();
            break;
        case 7:
            del_last();
            break;
        case 8:
            del_node();
            break;
        case 9:
            DeleteBefore();
            break;
        case 10:
            exit(0);
        default:
            printf("\\n\\aEnter valid choice");
            break;
        }
    }
}
    

This code implements various operations on a doubly 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 doubly linked-list operation is implemented!

1 comment:

  1. Output:



    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.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::36



    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::56



    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 36 56

    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

    36 56

    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::45



    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::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

    36 56 45 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

    36 56 45

    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 before you want to delete::56



    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

    36 45

    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.Exit

    ReplyDelete

Interactive Report: Introduction to the Internet of Things (IoT) ...

Popular Posts