void alteraLista(Lista *original, Lista *alterada) { destroyLista(alterada); Fila letras; iniciaFila(&letras); Pilha numeros; iniciaPilha(&numeros); // analisa os elementos da lista original struct elementoLista *aux = original->inicio; while(aux != NULL) { if(isalpha(aux->info)) enfileira(&letras, aux->info); else if(isdigit(aux->info)) empilha(&numeros, aux->info); else printf("Invalid character (%c).\n", aux->info); aux = aux->next; } //adiciona os valores a lista alterada while(emptyFila(&letras) != 1) pushBackLista(alterada, desenfileira(&letras)); while(sizePilha(&numeros) != 0) pushBackLista(alterada, desempilha(&numeros)); destroyFila(&letras); destroyPilha(&numeros); }
// esvaziarDisciplina: remove todos os elementos da fila void esvaziarDisciplina(tFila *f){ tDisciplina disciplina; // retira da fila enquanto // ela não retorna que está vazia while(!vazia(f)){ desenfileira(f, &disciplina); printf("\n\t\tDisciplina: %s removida!", disciplina.nome); } if(vazia(f)) printf("\n\n\t\t# Atencao: Lista Vazia! [ENTER]"); else printf("\n\n\t\t# Erro: Ao remover as disciplinas! [ENTER]"); fflush(stdin); getchar(); }
// excluiDisciplina: desenfileira o primeiro elemento da fila void excluiDisciplina(tFila *f){ int posicao, cont = 0, enc = 0; tDisciplina disciplina; if(vazia(f)) printf("\n\n\t\t# Erro: Cadastrar disciplinas! [ENTER]"); else{ cabecalho("Remover disciplina"); // remove a primeira disciplina da fila desenfileira(f, &disciplina); printf("\n\t\tDisciplina: %s removida! [ENTER]", disciplina.nome); } fflush(stdin); getchar(); }
//Funcao que simula o duelo entre os jogadores 1 e 2 void duelo(struct deck *jogador1, struct deck *jogador2, struct deck *aux, struct dados *dados) { struct carta cartaaux, carta1, carta2; int jogadas=0; clock_t start, end; clock_t diff; start=clock(); while(tamanho(jogador1)!=0 && tamanho(jogador2)!=0) { carta1 = desenfileira(jogador1); carta2 = desenfileira(jogador2); if(carta1.valor > carta2.valor){ while(tamanho(aux)!=0){ cartaaux = desenfileira(aux); enfileira(cartaaux.valor, cartaaux.naipe, jogador1); } enfileira(carta1.valor, carta1.naipe, jogador1); enfileira(carta2.valor, carta2.naipe, jogador1); }else if(carta1.valor < carta2.valor){ while(tamanho(aux)!=0){ cartaaux = desenfileira(aux); enfileira(cartaaux.valor, cartaaux.naipe, jogador2); } enfileira(carta1.valor, carta1.naipe, jogador2); enfileira(carta2.valor, carta2.naipe, jogador2); }else{ if(tamanho(aux)!=0){ carta1 = desenfileira(jogador1); carta2 = desenfileira(jogador2); enfileira(carta1.valor, carta1.naipe, aux); enfileira(carta2.valor, carta2.naipe, aux); } enfileira(carta1.valor, carta1.naipe, aux); enfileira(carta2.valor, carta2.naipe, aux); } jogadas++; } end=clock(); diff = (end-start); printf("Foram feitas %d jogadas\n", jogadas); printf("A duracao foi de %lu milisegundos\n", diff); insereDados(diff, jogadas, dados); }