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
}                                                                                                                                                                  


                                                          !!! HOPE U LIKE IT !!!
                                                  !!!  THANKS FOR READING !!!
                                                  !!!!!HAPPY PROGRAMMING !!!!!


Comments

Popular posts from this blog

Program To Evaluate Square Root Of A Number

TIC-TAC-TOE THROUGH C

LINKED LIST IMPLEMENTATION FOR GAME BATTLESHIP THROUGH C