Skip to content

Instantly share code, notes, and snippets.

@elissonmichael
Last active April 17, 2024 02:26
Show Gist options
  • Save elissonmichael/b24f0bb2b5154fc1b419d726c51a7f01 to your computer and use it in GitHub Desktop.
Save elissonmichael/b24f0bb2b5154fc1b419d726c51a7f01 to your computer and use it in GitHub Desktop.
Estrutura de Dados - Pilha Estática vs Dinâmica & Palíndromo
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int valor;
struct No *proximo;
} No;
typedef struct {
No *topo;
int tamanho;
} Pilha;
void inicializarPilha(Pilha *pilha) {
pilha->topo = NULL;
pilha->tamanho = 0;
}
void empilhar(int valor, Pilha *pilha) {
No *novoNo = malloc(sizeof(No));
novoNo->valor = valor;
if (pilha->tamanho == 0)
novoNo->proximo = NULL;
else
novoNo->proximo = pilha->topo;
pilha->topo = novoNo;
pilha->tamanho++;
}
void exibir(Pilha *pilha) {
No *temporario;
temporario = pilha->topo;
printf("Exibindo PILHA c/ %i Itens: \n", pilha->tamanho);
int i = pilha->tamanho;
while (i > 0) {
printf("Item: %i | Valor: [ %i ]\n", i, temporario->valor);
temporario = temporario->proximo;
i--;
}
}
void desempilhar(Pilha *pilha) {
if (pilha->tamanho == 0) {
printf("Pilha Está Vazia\n");
} else {
printf("[ %d ] Desempilhado\n", pilha->topo->valor);
pilha->tamanho--;
pilha->topo = pilha->topo->proximo;
}
}
void limparPilha(Pilha *pilha) {
printf("Limpando Pilha\n");
No *temporario;
temporario = pilha->topo;
while (temporario != NULL) {
printf("Liberando Recursos Alocados para Nó [%i] em %p\n", temporario->valor, temporario);
free(temporario);
temporario = temporario->proximo;
}
}
void main() {
Pilha pilha;
inicializarPilha(&pilha);
int novoItem;
int opcao;
while (opcao != 5) {
printf("Escolha uma Opção\n");
printf("1) Exibir Pilha\n");
printf("2) Empilhar Item na Pilha\n");
printf("3) Desempilhar Item da Pilha\n");
printf("4) Esvaziar Pilha\n");
printf("5) Sair do Programa\n");
scanf("%i", &opcao);
if (opcao == 1) exibir(&pilha);
if (opcao == 2) {
printf("Digite um Número Inteiro: \n");
scanf("%i", &novoItem);
empilhar(novoItem, &pilha);
}
if (opcao == 3) desempilhar(&pilha);
if (opcao == 4) {
limparPilha(&pilha);
inicializarPilha(&pilha);
printf("Pilha Está Vazia\n");
}
if (opcao == 5) limparPilha(&pilha);
}
printf("Programa Finalizado");
}
#include <stdio.h>
#include <string.h>
#define TAMANHO_MAXIMO 100
typedef struct {
int topo;
char letras[TAMANHO_MAXIMO];
} Pilha;
Pilha pilha;
void inicializa() {
pilha.topo = 0;
}
void empilhar(char letra) {
pilha.letras[pilha.topo] = letra;
pilha.topo++;
}
char desempilhar() {
pilha.topo--;
return pilha.letras[pilha.topo];
}
void exibirPilha() {
for (int i = pilha.topo - 1; i >= 0; i--)
printf("%i - %c\n", i, pilha.letras[i]);
}
void palindromo() {
char entradaDoUsuario[TAMANHO_MAXIMO];
printf("Digite uma palavra: ");
scanf("%s", entradaDoUsuario);
for (int i = 0; i < strlen(entradaDoUsuario); i++)
empilhar(entradaDoUsuario[i]);
printf("Palavra Digitada: %s\n", entradaDoUsuario);
printf("Palavra na Pilha: \n");
exibirPilha();
char *resultado = "É um Palíndromo";
for (int i = 0; i < strlen(entradaDoUsuario); i++)
if (entradaDoUsuario[i] != desempilhar())
resultado = "Não é um Palíndromo";
printf("%s\n", resultado);
}
int main() {
palindromo();
}
#include <iostream>
#include <cstring>
using namespace std;
#define TAMANHO_MAXIMO 100
struct Pilha {
int topo;
char letras[TAMANHO_MAXIMO];
};
struct Pilha pilha;
void inicializa() {
pilha.topo = 0;
}
void empilhar(char letra) {
pilha.letras[pilha.topo] = letra;
pilha.topo++;
}
char desempilhar() {
pilha.topo--;
return pilha.letras[pilha.topo];
}
void exibirPilha() {
for (int i = pilha.topo - 1; i >= 0; i--)
cout << i<< " - " << pilha.letras[i] << endl;
}
int main() {
char entradaDoUsuario[TAMANHO_MAXIMO];
cout << "Digite uma palavra: ";
cin >> entradaDoUsuario;
for (int i = 0; i < strlen(entradaDoUsuario); i++)
empilhar(entradaDoUsuario[i]);
cout << "Palavra Digitada: " << entradaDoUsuario << endl;
cout << "Palavra na Pilha: " << endl;
exibirPilha();
string resultado = "É um Palíndromo";
for (int i = 0; i < strlen(entradaDoUsuario); i++)
if (entradaDoUsuario[i] != desempilhar())
resultado = "Não é um Palíndromo";
cout << resultado << endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment