Pilhas C/C++ - Pares e ímpares
Publicado por Diego Furtado (última atualização em 22/09/2009)
[ Hits: 9.370 ]
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--; } }
ORDENACAO PELO METODO SHELLSORT
Agenda eletrônica completa em C
Manipulação de registros em arquivos utilizando índices
ListDir - Um listador de diretórios
FileCopy - Copiador de Arquivo de Texto
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
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
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Utilização sistema operacional - Linux (1)
Impressora SAMSUNG não habilita/impr... (0)
[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