Pilhas C/C++ - Pares e ímpares
Publicado por Diego Furtado (última atualização em 22/09/2009)
[ Hits: 9.589 ]
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--; } }
Organizador de filmes para o IMDB
ListDir - Um listador de diretórios
Conversão de arquivos texto entre Windows e Linux
Nenhum coment�rio foi encontrado.
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Autologin: praticidade ou não?
Instalação do Onion OS no Miyoo Mini e Miyoo Mini Plus
Proteja seu Linux Mint com o Timeshift: Restaure o sistema mesmo que ele não inicie!
como instalar o amdgpu no linux manjaro no linux, pelo o repo e comand... (3)
Google Crhome não abre desde que eu atualizei pelo "program... (1)
paginação dos favoritos não funciona no vivaolinux[BU... (8)
Alguém pode me recomendar um editor de textos? [RESOLVIDO] (11)