Você está na página 1de 3

Nome: Flávio Bezerra dos Santos

Disciplina: Estrutura de dados

1)

1 2 3 4, 1 2 4 3, 1 3 4 2, 1 3 2 4, 1 4 3 2, 1 4 2 3

2 1 3 4, 2 1 4 3, 2 3 1 4, 2 3 4 1, 2 4 1 3, 2 4 3 1

3 1 2 4, 3 1 4 2, 3 2 1 4, 3 2 4 1, 3 4 1 2, 3 4 2 1

4 3 2 1, 4 3 1 2, 4 2 3 1, 4 2 1 3, 4 1 3 2, 4 1 2 3

2)

if (pilhavazia ()) empilha ('B'); Verificação da pilha se está com o estado vazio,
caso essa condição seja verdadeira, coloca a
letra ‘B’ na pilha

else{ Caso já exista elementos

Verificação da letra que está no topo da pilha


if (espia () != 'A') empilha ('B'); deve ser diferente da letra ‘A’, caso verdadeiro,
é colocado a letra ‘B’ no topo

else { Caso falso

Laço de repetição com a verificação se estado


while (!pilhavazia () && espia () == 'A') da pilha está vazio e se a letra do topo é ‘A’

Retira o elemento do topo


desempilha ();
Coloca a letra ‘B’ no topo
empilha ('B'); } }

3)

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

typedef struct {
char *itens;
int topo;
} Pilha;
void iniciar(Pilha *pilha) {
pilha->topo = -1;
pilha->itens = malloc(sizeof(char));
}

int tamanho(Pilha *pilha) {


return pilha->topo + 1;
}

bool vazio(Pilha *pilha) {


return pilha->topo == -1;
}

char pop(Pilha *pilha) {


int item;

if (vazio(pilha)) {
printf("A pilha está vazia");
exit(1);
}

item = (pilha->itens[pilha->topo--]);

if (tamanho(pilha) > 1) {
pilha->itens = realloc(pilha->itens, sizeof(char) * (tamanho(pilha) - 1));
}

return item;
}

void push(Pilha *pilha, char item) {


pilha->itens = realloc(pilha->itens, sizeof(char) * (tamanho(pilha) + 1));
pilha->itens[++(pilha->topo)] = item;
}

void reverterTexto (Pilha *pilha, char *string) {


char palavra[100];
int indice = 0;

for (int i = strlen(string) - 1; i >= 0; i--) {


if (string[i] != ' ') {
palavra[indice] = string[i];
palavra[indice + 1] = '\0';
}

if (string[i] == ' ' || i == 0) {


for (int j = strlen(palavra) - 1; j >= 0; j--) {
push(pilha, palavra[j]);
}

if (string[i] == ' ') {


push(pilha, ' ');
}

indice = 0;
} else {
indice++;
}
}
}

int main () {
Pilha pilha;

iniciar(&pilha);

reverterTexto(&pilha, "ESTE EXERCICIO E MUITO FACIL");

printf("Frase reversa: ");

while (!vazio(&pilha)) {
printf("%c", pop(&pilha));
}
}

Você também pode gostar