rendered paste body#include<stdio.h>
struct list{
int n;
struct list *p;
};
void disp(struct list *t);
void insert(struct list **head,int val);
void del(struct list *t,struct list *pr,struct list **head);
void insert(struct list **head,int val)
{
struct list *t,*tm = *head;
if((*head) == NULL)
{
(*head) = (struct list* )malloc(sizeof(struct list));
// printf("\n - Start");
(*head)->n = val;
(*head)->p = (*head);
}
else
{
// printf("\n - Rest");
t = (struct list* )malloc(sizeof(struct list));
t->n = val;
t->p = (*head);
while(tm->p != *head)
tm = tm->p;
tm->p = t;
(*head) = t;
}
}
void del(struct list *t,struct list *pr,struct list **h)
{
struct list *tmp = NULL;
struct list *tm = NULL;
if(t == *h)
{
*h = (*h)->p;
pr->p = t->p;
free(t);
}
else
{
pr->p = t->p;
free(t);
}
}
void disp(struct list *t)
{
struct list *h = t->p;
printf("\nList is \n");
printf("%d ",t->n);
while(h != t)
{
printf("%d ",h->n);
h = h->p;
}
printf("\n");
getchar();
return;
}
int main()
{
int n =11,m=3,c=0,i=0;
struct list *head = NULL;
struct list *tp = NULL;
struct list *prev;
for(i=n;i>=1;i--)
insert(&head,i);
disp(head);
//getchar();
c = n-1;
tp = head;
prev =NULL;
while(c > 0)
{
for(i=1;i<m;i++)
{
prev = tp;
tp = tp->p;
}
printf("\n \t\t\tOut Value = %d",tp->n);
del(tp,prev,&head);
c--;
tp = prev->p;
// disp(head);
// getchar();
}
printf("\n\nVal - %d ",head->n);
getchar();
}