Basics of Linked List

 #include<stdio.h>

#include<stdlib.h>


struct lnode{

    int data;

    struct lnode* next;

};


typedef struct lnode node;


node * head = NULL;


void insertAtBeginning(int val) {

   node* newNode=(node*)malloc(sizeof(node));

   if(newNode==NULL) {

       printf("Out of memory");

       return;

   }

   newNode -> data = val;

   if(head==NULL) {             // starting node is empty

       newNode -> next = NULL;

       head = newNode;

   }

   else {                       // starting node is head

       newNode -> next = head;

       head = newNode;

   }

   printf("inserted %d at the beginning",val);

}


void display() {

    if(head==NULL) {

        printf("List is empty");

        return;

    }

    node* temp = head;

    printf("Elements in the list are: ");

    while(temp!=NULL) {

        printf("%d ",temp -> data);

        temp = temp -> next;

    }

}


void insertAtPos(int pos, int val) {

    int i;

    node* newNode=(node*)malloc(sizeof(node));

    if(newNode==NULL) {

       printf("Out of memory");

       return;

    }

    newNode -> data = val;

    node* temp =  head;

    for(i=1;i<=pos-1;i++) {

        temp = temp -> next;

        if(temp==NULL) {

            printf("Invalid position\n");

            return;

        }

    }

    newNode -> next = temp -> next;

    temp -> next = newNode;

    

    printf("Inserted  %d at pos %d",val,pos);

}

void deleteAtpos(int pos) {

    int i;

    node* temp = head;

    node* prev;

    if(head==NULL) {

       printf("Out of memory\n");

       return;

    }

    

    if(pos==0) {

        head = head -> next;

        printf("Deleted %d",temp -> data);

        free(temp);

        return;

    }

    for(i=1;i<=pos;i++) {

        prev = temp;

        temp - temp -> next;

        if(temp==NULL) {

            printf("Invalid Position\n");

            return;

        }

    }

    prev -> next = temp -> next;

    printf("Deleted %d",temp -> data);

    free(temp);

}


int main() {

    int choice,val,pos;

    while(1){

        printf("\n ----- Linked List Menu ----\n");

        printf("1.insert at Beginning\n");

        printf("2.Display the list\n");

        printf("3.Insert at specified Position\n");

        printf("4.Delete at specified Position\n");

        printf("\n-----------------------\n");

        printf("Enter your choice:\t");

        

        scanf("%d",&choice);

        switch(choice) {

            case 1:

            printf("Enter the data: ");

            scanf("%d",&val);

            insertAtBeginning(val);

            break;

            case 2:

            display();

            break;

            case 3:

            printf("Enter the pos: ");

            scanf("%d",&pos);

            printf("Enter the data: ");

            scanf("%d",&val);

            if(pos==0) {

                insertAtBeginning(val);

            }

            else {

                insertAtPos(pos,val);

            }

            break;

            case 4:

            printf("Enter the pos: ");

            scanf("%d",&pos);

            if(pos<0) {

                printf("Invalid Position");

                break;

            }

            deleteAtpos(pos);

            break;

            

            

        

        }

    }

}

Comments

Popular posts from this blog

C PROGRAMMING BASICS

3.1.24 Test link