Skip to main content

Basic Link List Operations

//Basic Link List Operation
#include<stdio.h>
#include<malloc.h>
typedef struct list
{
    int data;
    struct list *next;
}node;
int count=0;
node *START=NULL;

insert(int i)
{
    node *tmp,*q;
    tmp=(node*)malloc(sizeof(node));
    tmp->next=NULL;
    tmp->data=i;
    if(START==NULL)
    {
        START=tmp;
        count++;
    }else
        {
            q=START;
            while(q->next!=NULL)
            {
                q=q->next;
            }
            q->next=tmp;
            count++;
        }
}

display()
{
    node *q;
    if(START==NULL)
    {
        printf("\nList IS Empty");
    }else
        {
            q=START;
            while(q!=NULL)
            {
                printf("\t%d",q->data);
                q=q->next;
            }
        }
   
}

int search(int i)
{
    int flag=0;
    node *q;
    if(START==NULL)
    {
        printf("\nList IS Empty");
    }else
        {
            q=START;
            while(q!=NULL)
            {
                if(q->data==i)
                {
                    flag=1;
                }
                printf("\t%d",q->data);
                q=q->next;
            }
        }
return flag;
}

int delete(int i)
{
    int flag=0;
    node *q;
    if(START==NULL)
    {
        printf("\nList IS Empty");
    }else
        {
            q=START;
            if(q->data==i)
            {
                START=q->next;
                flag=1;
                count--;
            }
            q=START;
            while(q->next->next!=NULL)
            {
                if(q->next->data==i)
                {
                    q->next=q->next->next;               
                    flag=1;
                    count--;
                }
                q=q->next;
            }
            if(q->next->data==i)
            {
                q->next=NULL;
                flag=1;
                count--;
            }
        }
return flag;
}

int main()
{
    int ch,f=0;
    //clrscr();//Optional
    while(f<=1)
    {
        printf("\n1. INSERT VALUE\n2. DISPLAY \n3. SEARCH\n4. DELETE\n5. COUNT");
        scanf("%d",&ch);
        switch(ch)
        {
            case 1:
                printf("\nEnter Element");
                scanf("%d",&ch);
                insert(ch);
                //getch(); //Optional
                break;
            case 2:
                display();
                //getch();//Optional
                break;
            case 3:
                printf("\nEnter Element to SEARCH");
                scanf("%d",&ch);
                if(search(ch)==1)
                {
                    printf("\nRecord Found");
                }else
                    {
                        printf("\nRecord not found");
                    }
                break;
                //getch(); //Optional
            case 4:
                printf("\nEnter Element to DELETE");
                scanf("%d",&ch);
                if(delete(ch)==1)
                {
                    printf("\nRecord(s) Deleted");
                }else
                    {
                        printf("\nRecord not found");
                    }
                break;
                //exit();//Optional
            case 5:
                printf("No of records :: %d",count);
                break;
            default:
                printf("\nWrong Input");
        }
    }
}

Comments