Pilhas C/C++ - Pares e ímpares
Publicado por Diego Furtado (última atualização em 22/09/2009)
[ Hits: 9.394 ]
Empilhando números pares e impares e mostrando na tela separadamente.
/// AUTOR : Diego Furtado de Souza /// EMAIL : dsouza.bh@gmail.com /// Espaço VOL : http://www.vivaolinux.com.br/~diegofsouza #include <stdio.h> #include <stdlib.h> typedef int TipoChave; typedef struct CelulaStr *Apontador; typedef struct { TipoChave Chave; } TipoItem; typedef struct CelulaStr { TipoItem Item; Apontador Proximo; } Celula; typedef struct { Apontador Fundo, Topo; int Tamanho;//Sempre será int, por isso não se usa o typedef }TipoPilha; void Empilha (TipoItem , TipoPilha *); void Desempilha (TipoItem *, TipoPilha *); void FpVazia (TipoPilha *); bool Vazia (TipoPilha); int main () { int valor, numeros; TipoPilha pilhaPar, pilhaImpar; //Pilha TipoItem itemPar, itemImpar; FpVazia(&pilhaPar); FpVazia(&pilhaImpar); printf("Quantos numeros deseja digitar? "); scanf("%d", &numeros); printf("Digite os valores:\n"); for (int i = numeros ; i > 0; i--) { //Empilhando os valores. scanf("%d", &valor); if (!(valor % 2)) { // Coloca o valor impar ou par na Chave e empilha itemPar.Chave = valor; Empilha(itemPar, &pilhaPar); } else { itemImpar.Chave = valor; Empilha(itemImpar, &pilhaImpar); } }//Fim Empilhamento. printf("Valores Pares : "); for (int i = pilhaPar.Tamanho; i > 0; i--) { //Desempilhando valores pares e mostrando na tela Desempilha(&itemPar, &pilhaPar); printf("%d ", itemPar.Chave); } printf("\nValores Impares : "); for (int i = pilhaImpar.Tamanho; i > 0; i--) { //Desempilhando e mostrando os valores impares Desempilha(&itemImpar, &pilhaImpar); printf("%d ", itemImpar.Chave); } return 0; } void FpVazia (TipoPilha *Pilha) { Pilha->Topo = (Apontador) malloc(sizeof(Celula)); Pilha->Fundo = Pilha->Topo; Pilha->Topo->Proximo = NULL; Pilha->Tamanho = 0; } void Empilha (TipoItem x, TipoPilha *Pilha) { Apontador Aux; Aux = (Apontador) malloc (sizeof (Celula)); Pilha->Topo->Item = x; Aux->Proximo = Pilha->Topo; Pilha->Topo = Aux; Pilha->Tamanho++; } bool Vazia (TipoPilha Pilha) { return (Pilha.Topo == Pilha.Fundo); } void Desempilha(TipoItem *Item, TipoPilha *Pilha) { Apontador Aux; if (Vazia(*Pilha)) { printf("Pilha Vazia!\n"); return; } else { Aux = Pilha->Topo; Pilha->Topo = Aux->Proximo; *Item = Aux->Proximo->Item; free(Aux); Pilha->Tamanho--; } }
Controle de Funcionários (Básico)
Organizador de filmes para o IMDB
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta