Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> typedef struct{ int dado; }Titem; typedef struct celula{ Titem item; struct celula *prox; }Tcelula; typedef struct{ Tcelula *primeiro, *ultimo; int tamanho; }Tlista; void inicialista(Tlista *pLista){ pLista->primeiro = NULL; pLista->ultimo = pLista->primeiro; pLista->tamanho = 0; } int isVazia(Tlista *pLista){ return pLista->primeiro == NULL; } int enqueue(Tlista *pLista, Titem x){ Tcelula *novo = (Tcelula *) malloc (sizeof(Tcelula)); novo->item = x; novo->prox = NULL; if(isVazia(pLista)){ pLista->primeiro = novo; pLista->ultimo = novo; pLista->tamanho++; return 0; } pLista->ultimo->prox = novo; pLista->ultimo = novo; pLista->tamanho++; return 1; } int dequeue(Tlista *pLista, Titem *x){ Tcelula *aux; if(isVazia(pLista)){ printf("Lista Vazia!!\n"); return 0; } aux = pLista->primeiro; *x = aux->item; pLista->primeiro = aux->prox; free(aux); pLista->tamanho--; return 1; } int imprimir(Tlista *pLista){ Tcelula *aux; if(isVazia(pLista)){ printf("Lista Vazia!!\n"); return 0; } aux = pLista->primeiro; while (aux != NULL){ printf("%d", aux->item.dado); aux = aux->prox; } return 1; } int jogandocartas(Tlista *pLista){ Titem x,y; Tcelula *aux; printf("Discarded cards: "); while(pLista->tamanho > 1){ dequeue(pLista, &x); if(pLista->tamanho > 1) printf("%d, ", x.dado); else printf("%d", x.dado); aux = pLista->primeiro; y = pLista->primeiro->item; pLista->primeiro = pLista->primeiro->prox; free(aux); enqueue(pLista,y); pLista->tamanho--; } printf("\nRemaining card: %d\n", pLista->primeiro->item.dado); return 0; } int limpafila(Tlista *pLista){ Tcelula *aux; if(isVazia(pLista)) return 0; while(pLista->primeiro != NULL){ aux = pLista->primeiro; pLista->primeiro = aux->prox; free(aux); pLista->tamanho--; } pLista->primeiro = NULL; pLista->ultimo = NULL; return 1; } int main() { Tlista lista; inicialista(&lista); Titem x; int i,n; do{ i = 1; n =1; scanf("%d",&n); if(n >= 2){ while(i <= n){ x.dado = i; enqueue(&lista, x); i++; } jogandocartas(&lista); limpafila(&lista); } }while(n != 0); return 0; }
Compartilhar