Last active
April 17, 2024 02:26
-
-
Save elissonmichael/b24f0bb2b5154fc1b419d726c51a7f01 to your computer and use it in GitHub Desktop.
Estrutura de Dados - Pilha Estática vs Dinâmica & Palíndromo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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"); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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