L10 - Circular LL
L10 - Circular LL
•Search
•Traverse
INSERT AS A FIRST NODE
void insertf()
{
struct studinfo *newnode,*ptr;
newnode=(struct studinfo *) malloc(sizeof(struct studinfo));
printf("Enter a new record : marks and name ");
scanf("%d%s",&newnode->marks,newnode->name);
if(start==NULL)
{
start = newnode;
newnode->next = newnode;
}
else
{
ptr = start;
while(ptr->next !=start)
ptr = ptr->next;
newnode->next = start;
start = newnode;
ptr->next =start;
}
}
INSERT AS A LAST NODE
void insertl()
{
struct studinfo *newnode, *ptr;
newnode=(struct studinfo *) malloc(sizeof(struct studinfo));
printf("Enter a new record : marks and name ");
scanf("%d%s",&newnode->marks,newnode->name);
if (start == NULL)
{
start =newnode;
newnode->next = newnode;
}
else
{
ptr =start;
while (ptr->next != start)
ptr= ptr->next;
ptr->next = newnode;
newnode->next = start;
}
}
INSERT AFTER A NODE
void inserta()
{
int cnt=1, no;
struct studinfo *ptr,*prevptr, *newnode;
printf("\n enter number ...");
scanf("%d",&no);
ptr=start;
while (cnt != no)
{
ptr = ptr->next;
cnt++;
}
newnode=(struct studinfo *) malloc(sizeof(struct studinfo));
printf("Enter a new record : marks and name");
scanf("%d%s",&newnode->marks,newnode->name);
newnode->next = ptr->next;
ptr->next = newnode;
}
INSERT BEFORE A NODE
void insertb()
{
void deletel()
{
struct studinfo *ptr,*prevptr;
ptr=start;
if (start == NULL)
printf("\n List is empty, element can not be delete");
else
{
if (ptr->next == start)
start = NULL;
else
{
while(ptr->next!=start)
{
prevptr=ptr;
ptr=ptr->next;
}
prevptr->next =start;
}
free(ptr);
}
}
TRAVERSE
void traverse()
{
struct studinfo *ptr;
ptr= start;
if (ptr)
{
while (ptr->next !=start)
{
printf("\nRecord: marks and name %d %s\n",ptr->marks,
ptr->name);
ptr = ptr->next;
}
if (ptr)
printf("\nRecord: marks and name %d %s\n",ptr-
>marks, ptr->name);
}
else
printf("\nCircular list is empty ");
getch();
}