Pilhas C/C++ - Pares e ímpares
Publicado por Diego Furtado (última atualização em 22/09/2009)
[ Hits: 9.457 ]
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--; } }
Copia uma linha selecionada para um arquivo secundário
Contando a quantidade de palavras de um arquivo texto
Conversão integral de textos em letras maiúsculas
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)