Estrutura de dados em C -> Pilhas
Publicado por Thiago Gallo 29/10/2004
[ Hits: 26.881 ]
Este é um programinha bem simples pra checar a existencia de um palindromo ( uma palavra ou frase que pode ser lida invertida tendo o mesmo sentido ), exemplo: "O Galo nada no lago".
O programa foi feito para mostrar uma possivel implementacao de pilhas em C.
#include <stdio.h> #include <string.h> ///////////////////////////////////////////////////////////// ////////////////////////// defines ////////////////////////// ///////////////////////////////////////////////////////////// #define MAX 100 // mudar tamanho da pilha typedef char TIPO_STACK; // mudar o tipo de pilha ///////////////////////////////////////////////////////////// ///////////////////// variaveis globais ///////////////////// ///////////////////////////////////////////////////////////// TIPO_STACK stack[MAX]; int top = -1; ///////////////////////////////////////////////////////////// /////////////////// protótipos de funções /////////////////// ///////////////////////////////////////////////////////////// void pop( TIPO_STACK * ); void push( TIPO_STACK ); ////////////////////////////FUNÇÃO/////////////////////////// //////////////////////////// MAIN /////////////////////////// ///////////////////////////////////////////////////////////// int main(void) { char fraseOriginal[MAX], fraseInvertida[MAX]; int i, tamanho; printf("\n=== Checar existencia de palindromo ===\n\n Entre com a frase a ser checada \n(sem caracteres especiais e sem espacos) \n\nFrase: "); scanf("%s", fraseOriginal); //// coloca frase na pilha //// tamanho = strlen( fraseOriginal ); for( i = 0; i < tamanho; i++ ) push( fraseOriginal[i] ); //// tira frase da pilha, agora invertida //// for( i = 0; i < tamanho; i++ ) pop( &fraseInvertida[i] ); fraseInvertida[tamanho] = '{FONTE}'; // finaliza string invertida //// mostra frase invertida //// printf("Frase Invertida: %s", fraseInvertida); //// checa se as duas strings sao iguais //// if( !strcmp( fraseOriginal, fraseInvertida) ) printf("\nResultado: Confere, palindromo existente\n\n"); else printf("\nResultado: Nao confere\n\n"); return ( 0 ); } // fim main ////////////////////////////FUNÇÃO/////////////////////////// /// Nome: pop() /// /// Descricao: remove elemento da pilha /// ///////////////////////////////////////////////////////////// void pop( TIPO_STACK *elemento ) { if( top == -1 ) // pilha vazia printf("\npilha vazia\n"); else { *elemento = stack[top]; top--; } } // fim funcao ////////////////////////////FUNÇÃO/////////////////////////// /// Nome: push() /// /// Descricao: insere elemento na pilha /// ////////////////////////////////////////////////////////////// void push( TIPO_STACK elemento ) { if( top == MAX ) // pilha cheia printf("\npilha cheia\n"); else { top++; stack[top] = elemento; } } // fim funcao
Função para escrita de um número em notação binária através de recursão
Ordenação de vetor pelo método Bubblesort
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (1)
Plasma 6 com partes em inglês (0)
Erro no upgrade: Sub-process /usr/bin/dpkg returned an error code (1) ... (3)
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (6)