Skip to main content

Circular Linked List using C


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{
 int num;
 struct node *next;
 }*start=NULL,*last=NULL;
 typedef struct node node;
 typedef struct node* nptr;
 int count()
 {
 int c=1;
 nptr p;
 p=start;
 while(p->next!=start)
 {
  p=p->next;
  c++;
  }
  return c++;
  }

 void ins_beg()
{ int item;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
last=start=p;
p->next=start;
}
else
{
q=start;
while(q->next!=start)
q=q->next;
p->next=start;
start=p;
q->next=start;
}
}
void ins_end()
{
int item;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
start=p;
p->next=start;
}
else
{
last->next=p;
p->next=start;
last=p;
}
}
void del_beg()
{
 int c;
 nptr p;
 if(start==NULL)
  {
  printf("\nunderflow");
  return;
  }
  c=count();
  if(c==1)
  {
  p=start;
  last=start=NULL;
  printf("\ndeleted node is %d",p->num);
  free(p);
  }
  else
  {
   p=start;
   start=start->next;
   printf("\ndeleted node is %d",p->num);
   free(p);
   }
   }

void del_end()
{
 int c;
 nptr p,q;
 if(start==NULL)
  {
  printf("\nunderflow");
  return;
  }
  c=count();
  if(c==1)
  {
  p=start;
  last=start=NULL;
  printf("\ndeleted node is %d",p->num);
  free(p);
  }
  else
  {
  p=last;
  q=start;
  while(q->next->next!=start)
  q=q->next;
  printf("\ndeleted node is %d",p->num);
  free(p);
  q->next=start;
  last=q;
  }
  }
void traverse()
{
nptr p;
if(start==NULL)
{
printf("\n underflow");
return;
}
else
{
 p=start;
printf("List: ");
 while(p!=last)
 {
  printf(" %d",p->num);
  p=p->next;
 }
 printf(" %d",p->num);
}
}
 void ins_bet()
 {int item,i=1,pos,c;
    nptr p,q;
    p=(nptr)malloc(sizeof(node));
    printf("\n\nenter the position: ");
    scanf("%d",&pos);
    c=count();
    if(pos==0||pos==1||pos>c)
    printf("\nInsertion is not possible");
    else
    {
      printf("\nenter the item: ");
      scanf("%d",&item);
      p->num=item;
      q=start;
      while(i<pos-1)
      { q=q->next;
i++;
      }
      p->next=q->next;
      q->next=p;
    }
  }
    void del_bet()
 { int i=1,pos,c;
       nptr p,q;
     if(start==NULL)
     { printf("\n\nlinked list is empty");
     }
     else
     {
     printf("\nenter position: ");
     scanf("%d",&pos);
     p=q=start;
     c=count();
     if(pos==0||pos==1||pos>=c)
    printf("\nDeletion is not possible");
    else
    {
     while(i<pos)
     {q=p;
      p=p->next;
      i++;
     }
     q->next=p->next;
     printf("deleted node: %d",p->num);
     free(p);
    }
    }
  }
 void main()
 {
 int num;
 clrscr();
 while(1)
{clrscr();
 printf("\n******MENU*******");
 printf("\n1.INSERTION_BEG");
 printf("\n2.INSERTION_BET");
 printf("\n3.INSERTION_END");
 printf("\n4.DELETION_BEG");
 printf("\n5.DELETION_BET");
 printf("\n6.DELETION_END");
 printf("\n7.TRAVERSE");
 printf("\n8.EXIT");
 printf("\nENTER YOUR CHOICE: ");
 scanf("%d",&num);
 switch(num)
 {
  case 1:ins_beg();
break;
  case 2:ins_bet();
break;
  case 3:ins_end();
break;
  case 4:del_beg();
break;
  case 5:del_bet();
break;
  case 6:del_end();
break;
  case 7:traverse();
getch();
break;
  case 8:exit(0);
  default:printf("\nWRONG CHOICE");
  }
 }
getch();
}

Comments

Popular posts from this blog

Use Case Diagram for Online Book Store

Online Movie Ticket Booking Sequence Diagram

Linear search & Binary search using Template

Write a program to search an element from a list. Give user the option to perform Linear or Binary search. Use Template functions. #include<iostream> using namespace std; template <class T> void Lsearch(T *a, T item, int n) { int z=0; for(int i=0;i<n;i++) { if(a[i]== item) { z=1; cout<<"\n Item found at position = "<<i+1<<"\n\n"; } else if(z!=1) { z=0; } } if(z==0) cout<<"\n Item not found in the list\n\n"; } template <class T> void Bsearch(T *a, T item, int n) { int beg=0,end=n-1; int mid=beg+end/2; while((a[mid]!=item) && (n>0)) { if(item>a[mid]) beg=mid; else end=mid; mid=(beg+end)/2; n--; } if(a[mid]==item) cout<<"\n Item found at position = "<<mid+1<<"\n\n"; else cout<<"\n Item not found in the list\n\n"; } void main() { int iarr[10] = {2,42,56,86,87,99,323,546,767,886};