All pastes #193954 Raw Edit

Someone

public text v1 · immutable
·published 2006-10-07 11:41 UTC
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();
}