Monday, 18 September 2017

Singly Circular Link List Program


-------------------------------------------------------------------------------------------------------------------
Singly circular 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

voiddeletelast();
voiddeletefirst();
voiddeletemid();
voiddeletesp();
voidinsertfirst();
voidinsertlast();
voidinsertmid();
voidinsertsp();

voidcreatenode();
void display();

void main()
{
intch;
            clrscr();
            do
             {
            printf("\n 1 . Insert at first ");
            printf("\n 2 . insert 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();
}

voidcreatenode()
{
newnode= (struct node * )(malloc) (sizeof (struct node));
newnode->next=newnode;

printf(" Enter data ");
scanf("%d",&newnode->data);
}
//----------------------------------------------------------------
voidinsertfirst()
{
if(head==NULL)
     {
head=newnode;
     }
else
{ temp=head;
while(temp->next!=head)
      {
            temp=temp->next;
      }

newnode->next=head;
temp->next=newnode;
            head=newnode;

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

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

temp->next=newnode;
newnode->next=head ;        //connect newnode

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

            while(temp->next!=head)    //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;

      }
 }

voidinsertsp()
{
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!=head)    //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;

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

}

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

voiddeletefirst()
{
if (head==NULL)
printf("\n\n List is empty .......................");
else
 {
   q=head;     //q  is last node
while(q->next!=head)
   {
    q=q->next;
   }

temp=head;

head=temp->next;

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

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

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

            while(temp->next!=head)
                {
            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;


      }
 }

//---------------------------------------------------------------------------------------------------------------
voiddeletesp()
{
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!=head)    //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