NMAMITLOOP

Astro in brief

Find out what makes Astro awesome!

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

struct Node
{
    struct Node *link;
    int value;
};

typedef struct Node *NODE;

NODE get_node(int value)
{
    NODE node =  (NODE)malloc(sizeof(struct Node));
    node->value =value;
    node->link = NULL;
    return node;
}

NODE insert_front(NODE top, int item)
{
    NODE newNode = get_node(item);
    newNode->link = top;
    printf("%d is sucessfully inserted\n", item);
    return newNode;
}

NODE delete_front(NODE top)
{
    if (top == NULL)
    {
        printf("sll is empty\n");
        return top;
    }
    NODE next = top->link;
    printf("%d is sucessfully deleted\n", top->value);
    free(top);
    return next;
}

NODE insert_rear(NODE front, int item)
{
    NODE newNode = get_node(item);
    if (front == NULL)
    {
        printf("%d is successfully inserted\n", item);
        return newNode;
    }
    NODE rear = front;
    for (; rear->link != NULL; rear = rear->link)
        ;
    rear->link = newNode;
    printf("%d is successfully inserted\n", item);
    return front;
}

void display(NODE top)
{
    if (top == NULL)
    {
        printf("sll is empty\n");
        return;
    }

    for (NODE i = top; i != NULL; i = i->link)
        printf("%d\t", i->value);
    printf("\n");
}
int main()
{
    printf("singly linked list\n");
    printf("1: insert front\n");
    printf("2: delete front\n");
    printf("3: insert rear\n");
    printf("4: display\n");
    printf("5: exit\n");

    int choice, ele;
    NODE sll = NULL;
    while (1)
    {
        printf("Enter the choice: ");
        scanf("%d", &choice);
        switch (choice)
        {
        case 1:
            printf("Enter the element to be inserted: ");
            scanf("%d", &ele);
            sll = insert_front(sll, ele);
            break;
        case 2:
            sll = delete_front(sll);
            break;
        case 3:
            printf("Enter the element to be inserted: ");
            scanf("%d", &ele);
            sll = insert_rear(sll, ele);
            break;
        case 4:
            display(sll);
            break;
        case 5:
            printf("exiting...\n");
            return 0;
        }
    }
}