Advertisement
Riposati

Untitled

Nov 26th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct lista{
  5.     int v;
  6.     struct lista *prox;
  7. };
  8.  
  9. struct lista *insere(struct lista *ini,int v){
  10.  
  11.     struct lista *aux = ini;
  12.     aux = (struct lista *)malloc(sizeof(struct lista));
  13.  
  14.     aux->v = v;
  15.     aux->prox = NULL;
  16.  
  17.     if(ini==NULL){
  18.  
  19.         ini = aux;
  20.  
  21.     }else{
  22.  
  23.         struct lista *ultimo = ini;
  24.  
  25.         while(ultimo->prox!=NULL){
  26.  
  27.             ultimo = ultimo->prox;
  28.         }
  29.         ultimo->prox = aux;
  30.  
  31.         aux->prox = NULL;
  32.     }
  33.  
  34.     return ini;
  35. }
  36.  
  37. struct lista *rebenta(struct lista *ini){
  38.     if(ini->prox!=NULL){ /// se o proximo do inicio n?o for nulo
  39.  
  40.     struct lista *aux = ini; /// um aux = ini
  41.  
  42.     struct lista *aux2 = ini->prox; /// aux2 = o da frente do inicio
  43.     ini = ini->prox;
  44.     struct lista *aux4 = ini; /// o aux4 recebe o que deve ir para o fim da lista
  45.  
  46.     if(ini->prox==NULL)
  47.     printf("%d",aux->v);else{
  48.         printf("%d, ",aux->v); /// pra mostra os que foram desalocados
  49.     }
  50.     free(aux);
  51.  
  52.     while(aux2->prox!=NULL){
  53.  
  54.  
  55.         aux2 = aux2->prox;
  56.  
  57.     } /// esse while ? pra achar o ?ltimo
  58.  
  59.     /// aqui movimento os dados ///
  60.     if(ini->prox!=NULL){
  61.         ini = ini->prox;
  62.         aux4->prox=NULL;
  63.         aux2->prox = aux4;
  64.         return ini;
  65.     }
  66.  
  67.     }
  68.     return ini;
  69. }
  70.  
  71. int main()
  72. {
  73.     struct lista *ini = NULL;
  74.  
  75.     int i,v;
  76.  
  77.     scanf("%d",&v);
  78.  
  79.     while(v!=0){
  80.  
  81.     for(i=1;i<=v;i++){
  82.  
  83.         ini = insere(ini,i);
  84.     }
  85.  
  86.     printf("Discarded cards: ");
  87.     for(i=0;i<v;i++){
  88.         ini = rebenta(ini);
  89.     }
  90.  
  91.     printf("\n");
  92.     printf("Remaining card: ");
  93.     mostrar(ini);
  94.  
  95.     printf("\n");
  96.     scanf("%d",&v);
  97.     ini = NULL;
  98.     }  
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement