Estrutura de dados em C -> Pilhas
Publicado por Thiago Gallo 29/10/2004
[ Hits: 27.341 ]
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
Como Ativar a Aceleração por GPU (ROCm) no Ollama para AMD Navi 10 (RX 5700 XT / 5600) no Gentoo
Como criar um make.conf no Gentoo (para iniciantes)
Como instalar o Open WebUI para Ollama no Gentoo (com systemd)
INSTALAR (e jogar) COUNTER STRIKE 1.6 (install cs 1.6) NO LINUX
Configuração de IP fixo via nmcli e resolução de nomes via /etc/hosts no Gentoo
Removendo o bloqueio por erros de senha no Gentoo (systemd)
Papel de Parede Animado no KDE Plasma 6 (Com dicas para Gentoo)
Homebrew: o gerenciador de pacotes que faltava para o Linux!
Removendo a trava de versão do Project Brutality para GZDoom/UZDoom
É o fim da produção de hollywood e da netflix... (0)
O que você está ouvindo agora? [2] (230)









