Advertisement
Riposati

Untitled

Nov 26th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.48 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. void mostrar(struct lista *ini){
  38.  
  39.     struct lista *aux = ini;
  40.  
  41.         while(aux!=NULL){
  42.             //if(aux->prox!=NULL){
  43.                 //printf("%d -> ",aux->v);
  44.             //}else{
  45.                 printf("%d",aux->v);
  46.             //}
  47.             aux=aux->prox;
  48.         }
  49. }
  50.  
  51. /*
  52. struct lista *ordena(Lista *ini){
  53.  
  54.     Lista *aux = ini;
  55.     int auxiliador;
  56.  
  57.     while(aux->prox!=NULL){ /// com esse la?o percorro todas as posi??es da lista
  58.  
  59.             while(aux->v > aux->prox->v && aux->prox!=NULL){ /// com esse la?o percorro enquanto houver nego desordenado
  60.                 auxiliador = aux->v;
  61.                 aux->v = aux->prox->v;
  62.                 aux->prox->v = auxiliador;
  63.                 aux=ini;
  64.             }
  65.  
  66.         aux=aux->prox;
  67.     }
  68.     return ini;
  69. }
  70. */
  71.  
  72. /*
  73. struct lista *filaDePrioridades(Lista *ini){ /// pega os caboco e faz a fila de prioridades (ordena do maior pro menor)
  74.  
  75.     Lista *aux = ini;
  76.     int auxiliador;
  77.  
  78.     while(aux->prox!=NULL){ /// com esse la?o percorro todas as posi??es da lista
  79.  
  80.             while(aux->v < aux->prox->v && aux->prox!=NULL){ /// com esse la?o percorro enquanto houver nego desordenado
  81.                 auxiliador = aux->v;
  82.                 aux->v = aux->prox->v;
  83.                 aux->prox->v = auxiliador;
  84.                 aux=ini;
  85.             }
  86.  
  87.         aux=aux->prox;
  88.     }
  89.     return ini;
  90. }
  91.  
  92. */
  93. /*struct Lista *liberaMemoria(Lista *ini){
  94.  
  95.     Lista *aux=NULL;
  96.     Lista *aux2 =NULL;
  97.     while(ini!=NULL){
  98.         //printf("\nVim aqui\n");
  99.         aux=ini;
  100.         aux2 = ini->prox;
  101.         free(aux);
  102.         ini = aux2;
  103.     }
  104. }
  105. */
  106.  
  107. struct lista *rebenta(struct lista *ini){
  108.     if(ini->prox!=NULL){ /// se o proximo do inicio n?o for nulo
  109.  
  110.     struct lista *aux = ini; /// um aux = ini
  111.  
  112.     struct lista *aux2 = ini->prox; /// aux2 = o da frente do inicio
  113.     ini = ini->prox;
  114.     struct lista *aux4 = ini; /// o aux4 recebe o que deve ir para o fim da lista
  115.  
  116.     if(ini->prox==NULL)
  117.     printf("%d",aux->v);else{
  118.         printf("%d, ",aux->v); /// pra mostra os que foram desalocados
  119.     }
  120.     free(aux);
  121.  
  122.     while(aux2->prox!=NULL){
  123.  
  124.  
  125.         aux2 = aux2->prox;
  126.  
  127.     } /// esse while ? pra achar o ?ltimo
  128.  
  129.     /// aqui movimento os dados ///
  130.     if(ini->prox!=NULL){
  131.         ini = ini->prox;
  132.         aux4->prox=NULL;
  133.         aux2->prox = aux4;
  134.         return ini;
  135.     }
  136.  
  137.     }
  138.     return ini;
  139. }
  140.  
  141. int main()
  142. {
  143.     struct lista *ini = NULL;
  144.  
  145.     int i,v;
  146.  
  147.     scanf("%d",&v);
  148.  
  149.     while(v!=0){
  150.  
  151.     for(i=1;i<=v;i++){
  152.  
  153.         ini = insere(ini,i);
  154.     }
  155.  
  156.     printf("Discarded cards: ");
  157.     for(i=0;i<v;i++){
  158.         ini = rebenta(ini);
  159.     }
  160.  
  161.     printf("\n");
  162.     printf("Remaining card: ");
  163.     mostrar(ini);
  164.  
  165.     printf("\n");
  166.     scanf("%d",&v);
  167.     ini = NULL;
  168.     }
  169.     //system("pause");
  170.  
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement