Monday, 18 September 2017

Singly Link List Program

Singly Link List
Create a node and insert and delete ,frist,last,middle,specific position
---------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct node
{
int data;
struct node *next;

} ;

struct node *head=NULL  , *newnode,*temp=NULL,*q,*s;//global declaration

void deletelast();
void deletefirst();
void deletemid();
void deletesp();
void insertfirst();
void insertlast();
void insertmid();
void insertsp();
void createnode();
void display();


void main()
{
intch;
            clrscr();
            do
             {
            printf("\n 1 . crea at first ");
            printf("\n 2 . create list at last ");
            printf("\n 3 . Insert at middel ");
            printf("\n 4 . Insert at specific location ");
            printf("\n 5 ..*..... LIST Display...........*. ");
            printf("\n 6 . Delete from first ");
            printf("\n 7.  Delete from last ");
            printf("\n 8 . Delete from middel ");
            printf("\n 9 . Delete from specific location ");

            printf("\n 10 . *..........Exit................ ");

            printf("\n Enter your choice............ ");
            scanf("%d",&ch);
            switch(ch)
              {
            case 1:createnode();
                        insertfirst();
                        printf("\nNode inserted Sucessfully \n");
                        break;
            case 2:
                        createnode();
                        insertlast();
                        printf("\nNode inserted Sucessfully \n");
                        break;

            case 3:createnode();
                        insertmid();
                        printf("\nNode inserted Sucessfully \n");
                        break;
            case 4:createnode();
                        insertsp();
                        break;
            case 5:display();
                        printf("\n\n");
                        break;
            case 6:deletefirst();
                        printf("\n\n");
                        break;

            case 7:deletelast();
                        printf("\n\n");
                        break;
            case 8:deletemid();
                        printf("\n\n");
                        break;
            case 9:deletesp();
                        printf("\n\n");
                        break;
            case 10:exit(0);
            default  :printf("\n\n Re enter u r choice .......");


                          }
            }while(1);
getch();
}

Void createnode()
{
newnode= (struct node * )(malloc) (sizeof (struct node));
newnode->next=NULL;
printf(" Enter data ");
scanf("%d",&newnode->data);
}
//----------------------------------------------------------------
Void insertfirst()
{
if(head==NULL)
     {
head=newnode;
     }
else
      {    newnode->next=head;
            head=newnode;
      }
 }

voidinsertlast()
{
if(head==NULL)
     {
head=newnode;
     }
else
      {
temp=head;

            while(temp->next!=NULL)    //reach to last node
                 {
            temp=temp->next;
                 }

temp->next=newnode;         //connect newnode

      }
 }
//---------------------------------------------------------------------------
void insertmid()
{
intcnt=1,m,i=1;
if(head==NULL)
     {
head=newnode;
     }
else
      {
temp=head;

            while(temp->next!=NULL)    //reach to last node
                 {
            cnt++;
            temp=temp->next;
                 }
            temp=head;
                   m=cnt/2;
            while(i<m)
                   {
                        temp=temp->next;
                        i++;
                   }
                q=temp->next;
            temp->next=newnode;         //connect newnode
            newnode->next=q;

      }
 }
//-----------------------------------------------------------------------------------------
void insertsp()
{
intcnt=1,p,i=1;
printf("\n\n Enter postion ");
scanf("%d",&p);

if(head==NULL)
     {
printf("List is empty ...........");
     }
else
      {
temp=head;

            while(temp->next!=NULL)    //count nodes
                 {
            cnt++;
            temp=temp->next;
                 }

            if(p>1&&p<cnt)
                 {
            temp=head;
            while(i<p)
                   {
                        temp=temp->next;
                        i++;
                   }
                q=temp->next;
            temp->next=newnode;         //connect newnode
            newnode->next=q;
            printf("\nNode inserted Sucessfully \n");
                  }
            else
            printf("\n\n plzreEnterpostion ....");
      }
 }

//--------------------------------------------------------------------------------------------

void display()
{
struct node *temp ;
temp=head;

while(temp!=NULL)
{   printf("%d      ",temp->data);
temp=temp->next;
}

}

//----------------------------------------------------------------------------------
void deletefirst()
{
if (head==NULL)
printf("\n\n List is empty .......................");
else
 {
temp=head;
head=temp->next;

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

free(temp);

  }
}
//------------------------------------------------------------------------------------------

void deletelast()
{
if (head==NULL)
printf("\n\n List is empty .......................");
else
 {
temp=head;
while(temp->next->next!=NULL)
 {
temp=temp->next;
 }
 q=temp->next;
printf(" Deleted node is---- %d----",q->data);

free(q);
temp->next=NULL;
  }
}
voiddeletemid()
{
intcnt=1,m,i=1;
if(head==NULL)
     {
printf("\n\n List is empty .............");
     }
else
      {
temp=head;

            while(temp->next!=NULL)
                {
            cnt++;
            temp=temp->next;
                 }
            temp=head;
                   m=cnt/2;
            while(i<m)
                   {
                        temp=temp->next;
                        i++;
                   }
                q=temp->next;
                s=q->next;
            printf("\n\n Deleted Node is   %d  ",q->data);
            free(q);
            temp->next=s;


      }
 }
//-----------------------------------------------------------------------------------------------------
void deletesp()
{
intcnt=1,p,i=1;
printf("\n\n Enter postion ");
scanf("%d",&p);

if(head==NULL)
     {
printf("List is empty ...........");
     }
else
      {
temp=head;

            while(temp->next!=NULL)    //count nodes
                 {
            cnt++;
            temp=temp->next;
                 }

            if(p>1&&p<cnt)
                 {
            temp=head;
            while(i<p)
                   {
                        temp=temp->next;
                        i++;
                   }

                q=temp->next;
                s=q->next;
            printf("\n\n Deleted Node is   %d  ",q->data);
            free(q);
            temp->next=s;
                 }
            else
            printf("\n\n plzreEnterpostion ....");
      }

 }

Ebook

Ebook
Ebook