Circular Linked List
SINGLY CIRCULAR LINKED LIST
In This Post I'm Going To Demonstrate you Simple Operations On Singly Circular Linked List i.e.
(1) Addition Of Nodes
(2) Deletion Of Nodes
(3) Traversing The List
(4) Search A Data from List
THE CODE IS AS FOLLOWING :-
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct ll
{
int digit;
struct ll *next;
}mynode;
mynode *head,*start,*new1,*prev;
void addnode(mynode **hd,int data)
{
clrscr();
start=*hd;
new1=(mynode*)malloc(sizeof(mynode));
new1->digit=data;
if((*hd)->next==head)
{
start->next=new1;
new1->next=head;
printf("\nFirst Data %d Is Addeded !!",data);
return;
}//if
while(start->next!=head)
start=start->next;
start->next=new1;
new1->next=head;
start=new1;
printf("\nData %d Is Added " ,data);
}
void delnode(mynode **hd,int data)
{
clrscr();
start=prev=*hd;
if(start->next==head)
{
printf("\nList Is Empty Buddy Nothing To Delete");
return;
}//if ends
if(start->next->next==head)
{
if(start->next->digit!=data)
{
printf("\n%d Data Is Not Found On Single Node",data);
return;
}
start=start->next;
prev->next=start->next;
free(start);
printf("\nWarning : Single Data %d Is Deleted",data);
return;
}//if ends
while(start->next!=head)
{
start=start->next;
if(start->digit==data)
{
prev->next=start->next;
free(start);
printf("\n%d Data Is deleted ",data);
return;
}
else
prev=prev->next;
}//while ends here
printf("\n%d Data Is Not Found",data);
}
void searchnode(mynode *hd , int data)
{
clrscr();
start=hd;
if(start->next==head)
{
printf("\nList Is Empty Nothing Found Enter Some Data First ");
return;
}//if
while(start->next!=head)
{
start=start->next;
if(start->digit==data)
{
printf("\nData %d Is Found",data);
return;
}
}//while
printf("\nData %d Is Not Found",data);
}
void traverse(mynode *hd)
{
clrscr();
start=hd;
if(start->next==head)
{
printf("\nNOTHING FOUND ! LIST IS EMPTY ");
return;
}
printf("\nFollwing Data Are Found : \n");
while(start->next!=head)
{
start=start->next;
printf("%d,",start->digit);
}
}
void main()
{
int choice,data;
clrscr();
head=(mynode*)malloc(sizeof(mynode));
head->next=head;
while(1)
{
printf("\n1.ADD NODE");
printf("\n2.DELETE NODE");
printf("\n3.SEARCH NODE");
printf("\n4.TRAVERSE THE LIST");
printf("\n5.EXIT");
printf("\nENTER CHOICE : ");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\nEnter Data To Be Inserted : ");
scanf("%d",&data);
addnode(&head,data);
break;
case 2:
printf("\nEnter Data To Be Deleted : ");
scanf("%d",&data);
delnode(&head,data);
break;
case 3:
printf("\nEnter Data To Search : ");
scanf("%d",&data);
searchnode(head,data);
break;
case 4:
traverse(head);
break;
case 5:
printf("THANK'S FOR USING ME GOODBYE %c !!",1);
getch();
exit(0);
break;
default :
clrscr();
printf("\nInvalid Choice Re-Enter : ");
break;
}//switch
}//while(1)ends
#include<conio.h>
#include<stdlib.h>
typedef struct ll
{
int digit;
struct ll *next;
}mynode;
mynode *head,*start,*new1,*prev;
void addnode(mynode **hd,int data)
{
clrscr();
start=*hd;
new1=(mynode*)malloc(sizeof(mynode));
new1->digit=data;
if((*hd)->next==head)
{
start->next=new1;
new1->next=head;
printf("\nFirst Data %d Is Addeded !!",data);
return;
}//if
while(start->next!=head)
start=start->next;
start->next=new1;
new1->next=head;
start=new1;
printf("\nData %d Is Added " ,data);
}
void delnode(mynode **hd,int data)
{
clrscr();
start=prev=*hd;
if(start->next==head)
{
printf("\nList Is Empty Buddy Nothing To Delete");
return;
}//if ends
if(start->next->next==head)
{
if(start->next->digit!=data)
{
printf("\n%d Data Is Not Found On Single Node",data);
return;
}
start=start->next;
prev->next=start->next;
free(start);
printf("\nWarning : Single Data %d Is Deleted",data);
return;
}//if ends
while(start->next!=head)
{
start=start->next;
if(start->digit==data)
{
prev->next=start->next;
free(start);
printf("\n%d Data Is deleted ",data);
return;
}
else
prev=prev->next;
}//while ends here
printf("\n%d Data Is Not Found",data);
}
void searchnode(mynode *hd , int data)
{
clrscr();
start=hd;
if(start->next==head)
{
printf("\nList Is Empty Nothing Found Enter Some Data First ");
return;
}//if
while(start->next!=head)
{
start=start->next;
if(start->digit==data)
{
printf("\nData %d Is Found",data);
return;
}
}//while
printf("\nData %d Is Not Found",data);
}
void traverse(mynode *hd)
{
clrscr();
start=hd;
if(start->next==head)
{
printf("\nNOTHING FOUND ! LIST IS EMPTY ");
return;
}
printf("\nFollwing Data Are Found : \n");
while(start->next!=head)
{
start=start->next;
printf("%d,",start->digit);
}
}
void main()
{
int choice,data;
clrscr();
head=(mynode*)malloc(sizeof(mynode));
head->next=head;
while(1)
{
printf("\n1.ADD NODE");
printf("\n2.DELETE NODE");
printf("\n3.SEARCH NODE");
printf("\n4.TRAVERSE THE LIST");
printf("\n5.EXIT");
printf("\nENTER CHOICE : ");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\nEnter Data To Be Inserted : ");
scanf("%d",&data);
addnode(&head,data);
break;
case 2:
printf("\nEnter Data To Be Deleted : ");
scanf("%d",&data);
delnode(&head,data);
break;
case 3:
printf("\nEnter Data To Search : ");
scanf("%d",&data);
searchnode(head,data);
break;
case 4:
traverse(head);
break;
case 5:
printf("THANK'S FOR USING ME GOODBYE %c !!",1);
getch();
exit(0);
break;
default :
clrscr();
printf("\nInvalid Choice Re-Enter : ");
break;
}//switch
}//while(1)ends
}
!!! HOPE U LIKE IT !!!
!!! THANKS FOR READING !!!
!!!!!HAPPY PROGRAMMING !!!!!
U Can catch me at http://www.facebook.com/salokr
Comments
Post a Comment