You are on page 1of 4

CIRCULAR LINKED LIST IMPLEMENTATON AND ITS

OPERATIONS
#inc lude<a l l oc .h>
#inc lude<std io .h>
#inc lude<con io .h>
s t ruc t node
{
i n t data ;
s t ruc t node *b l i nk , * f l i nk ;
}
*head , *p t r , *p ;
i n t n=0;
vo id main ( )
{
int c;
vo id c rea te ( ) ;
vo id i n se r t ( ) ;
vo id de le te ( ) ;
vo id d i sp lay ( ) ;
c l r sc r ( ) ;
pr in t f ( " \n \ tC IRCULAR L INKED L IST IMPLEMENTATON AND I TS OPERAT IONS" ) ;
pr in t f ( " \n \ t * * * * * * * * * * * * * * **************************************** " ) ;
do
{
pr in t f ( " \nAva l i ab le Opera t i ons a re" ) ;
pr in t f ( " \n1 .C rea te \ t2 . I nse r t \ t3 .De le te \ t4 .D i sp lay \ t5 .Ex i t " ) ;
pr in t f ( " \nEn te r your cho i ce : \ t " ) ;
scan f ( "%d" ,&c ) ;
sw i t ch (c )
{
case 1 :c rea te ( ) ;b reak ;
case 2 : inse r t ( ) ;b reak ;
case 3 :de le te ( ) ;b reak ;
case 4 :d i sp lay ( ) ;b reak ;
}
}
whi le ( c !=5) ;
}
vo id c rea te ( )
{
char ch ;
pr in t f ( " \n* * * * * * * * * * * * * * * * ******CREAT ION******************* " ) ;
pt r=p=head=NULL ;
pt r=(s t ruc t node* )ma l l oc ( s i zeo f ( s t ruc t node) ) ;
head=pt r ;
n=0;

1 | Page Circular LL-coding


pt r - >f l i nk=pt r ;
pt r - >bl ink=pt r ;
do
{
pr in t f ( " \nEn te r the no . - >") ;
scan f ( "%d" ,&pt r - >data ) ;
n++;
p=(s t ruc t node * )ma l l oc ( s i zeo f ( s t ruc t node) ) ;
p- >f l i nk=NULL ;
p- >bl ink=pt r ;
pt r - >f l i nk=p;
pt r=p ;
pr in t f ( " \nDo you want to con t inue ( y /n ) - >") ;
ch=to lower (ge tch ( ) ) ;
}
whi le ( ch=='y ' ) ;
head - >bl ink=p;
p- >f l i nk=head ;
}

vo id i n se r t ( )
{
i n t pos ;
pr in t f ( " \n* * * * * * * * * * * * * * * * ****** INSERT ION******************* " ) ;
i f ( n<1)
{
pr in t f ( " \nL i s t i s empty" ) ;
re tu rn ;
}
pr in t f ( " \n To ta l no . o f nodes i s %d" ,n ) ;
r r :p r in t f ( " \nEn te r the pos i t i on - >") ;
scan f ( "%d" ,&pos ) ;
i f ( (pos<1) | | (pos>n+1) )
{
pr in t f ( " \n Inva l i d pos i t i on" ) ;
goto r r ;
}
p=(s t ruc t node* )ma l l oc ( s i zeo f ( s t ruc t node* ) ) ;
n++;
pt r=head ;
pr in t f ( " \nEn te r the no . - >") ;
scan f ( "%d" ,&p - >data ) ;
i f ( pos==1)
{
p- >f l i nk=head ;
p- >bl ink=head - >bl ink ;
head - >bl ink - >f l i nk=p;
head=p;
2 | Page Circular LL-coding
pr in t f ( " \nThe node i s i n se r ted" ) ;
}
e l se
{
whi le (pos>2)
{
pt r=pt r - >f l i nk ;
pos - - ;
}
p- >f l i nk=pt r - >f l i nk ;
p- >bl ink=pt r ;
pt r - >f l i nk=p;
p- >f l i nk - >bl ink=p;
pr in t f ( " \nThe node i s i n se r ted" ) ;
}
getch ( ) ;
}
vo id de le te ( )
{
i n t pos ;
pr in t f ( " \n* * * * * * * * * * * * * * * * ******DELET ION******************* " ) ;
i f ( n<1)
{
pr in t f ( " \nL i s t i s empty" ) ;
re tu rn ;
}
pr in t f ( " \n To to l no . o f nodes i s %d" ,n ) ;
qq :p r in t f ( " \nEn te r the pos i t i on - >") ;
scan f ( "%d" ,&pos ) ;
pt r=head ;
i f ( (pos>n) | | (pos<1) )
{
pr in t f ( " \n Inva l i d pos i t i on" ) ;
goto qq ;
}
e l se
{
i f ( pos==1)
{
head=head - >f l i nk ;
head - >bl ink=NULL ;
}
e l se
{
whi le (pos>2)
{
pt r=pt r - >f l i nk ;
pos - - ;
3 | Page Circular LL-coding
}
pt r - >f l i nk=pt r - >f l i nk - >f l i nk ;
p=pt r - >f l i nk ;
p- >f l i nk=pt r ;
}
n- - ;
pr in t f ( " \nThe node i s de le ted" ) ;
}
getch ( ) ;
}
vo id d i sp lay ( )
{
i n t m;
pr in t f ( " \n* * * * * * * * * * * * * * * * ******D ISPLAY******************* " ) ;
i f ( n<1)
{
pr in t f ( " \nL ink i s empty" ) ;
re tu rn ;
}
pr in t f ( " \n To ta l no . o f node i s :%d" ,n ) ;
m=n;
pt r=head ;
pr in t f ( " \nThe l i s t i s \ n " ) ;
whi le (m>0)
{
pr in t f ( "%d\n" ,p t r - >data ) ;
pt r=pt r - >f l i nk ;
m-- ;
}
re tu rn ;
}

4 | Page Circular LL-coding

You might also like