Buscar

Estrutura de dados - Pilha

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
Aluno: Bruno Leonardo Santos Nogueira 
Matrícula: 20101103448 
UCurso de Ciência da Computação 
Disciplina: Estrutura de Dados I 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 2 DE 13 
Rio de Janeiro 
abril de 2020 
UNIVERSIDADE VEIGA DE ALMEIDA 
Aluno: Bruno Leonardo Santos Nogueira 
Estrutura de Dados I 
Texto apresentado como pré-requisito da 
disciplina Estrutura de Dados I do Curso 
de Curso de Ciência da Computação da 
Universidade Veiga de Almeida. 
Professor Dr. Engo. Carlos A. Sicsú A. do Nascimento. 
Rio de Janeiro 
abril de 2020 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 3 DE 13 
SUMÁRIO 
INTRODUÇÃO ......................................................................................... 4 
1. Exercício 1 da Parte 5. .................................................................... 5 
1.1 Problema. ................................................................................... 5 
1.2 Códigos da Solução. .................................................................. 5 
1.3 Testes Realizados. ..................................................................... 7 
1.3.1 Primeiro Teste. ................................................................ 7 
1.3.2 Segundo Teste. ............................................................... 8 
1.3.3 Terceiro Teste. ................................................................ 8 
2. Exercício 2 da Parte 5. .................................................................... 9 
2.1 Problema. ................................................................................... 9 
2.2 Códigos da Solução. .................................................................. 9 
2.3 Testes Realizados. ................................................................... 11 
2.3.1 Primeiro Teste. .............................................................. 11 
2.3.2 Segundo Teste. ............................................................. 12 
3. Conclusão. ..................................................................................... 13 
3.1 Conclusões e Considerações Finais. ....................................... 13 
4. Bibliografia. .................................................................................... 13 
 
 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 4 DE 13 
INTRODUÇÃO 
A estrutura de dados Pilha é bastante intuitiva e uma estrutura de 
dados que segue a estratégia LIFO (último a entrar, primeiro a sair). 
A proposta deste trabalho é colocar em prática o conteúdo dado 
na Parte 5 do material - didático - Pilhas Estáticas, onde foi abordado o 
conceito das funções topo, push e pop. 
 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 5 DE 13 
1. Exercício 1 da UParte 5. 
1.1 Problema. 
Você deve ter notado que as funções pilhaCheia e pilhaVazia não 
foram utilizadas no exemplo anterior, apesar de terem sido criadas. 
Reescreva o código incluindo o uso destas funções.. 
 
1.2 Códigos da Solução. 
Programa exercício1.c 
#include <stdio.h> 
#include <stdlib.h> 
 
#define TAM_VET 10 
#define VERD 1 
#define FALSO 0 
#define ERRO -1 
 
void iniciaPilha (int *Topo) { 
*Topo = -1; 
} 
int pilhaVazia(int *Topo) { 
if (*Topo == -1) return(VERD); 
return(FALSO); 
} 
int pilhaCheia(int *Topo) { 
if (*Topo == TAM_VET-1) return(VERD); 
return(FALSO); 
} 
int push(float P[], int *Topo, float x) { // Empilha 
if ((pilhaCheia(Topo)) == (VERD)) { 
printf ( "\n\t****Erro - Ins. Pilha cheia****\n\n"); 
return(ERRO); 
} 
else { 
(*Topo)++; 
P[*Topo] = x; 
} 
return(VERD); 
} 
 
int pop(float P[], int *Topo, float *x) { // Desempilha 
if ((pilhaVazia(Topo)) == (VERD)) { 
printf ( "\n\t****Erro - Pilha vazia****\n\n"); 
return(ERRO); 
} 
else { 
*x = P[*Topo]; 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 6 DE 13 
(*Topo)--; 
} 
return(VERD); 
} 
void exibirVetor(float P[], int *Topo){ 
int i; 
printf ( "\nExibir elementos preenchidos do Vetor\n"); 
for(i=0;i<=*Topo;i++){ 
printf ( "\nElemento [%d]: %.2f ", i, P[i]); 
} 
printf ( "\n\n"); 
} 
int main(){ 
float P[TAM_VET]; 
int Topo; 
int ok, op=-1; 
float dado; 
iniciaPilha(&Topo); 
while ( op != 0 ) { 
printf ("\n-----------------"); 
printf ("\nMenu"); 
printf ("\n-----------------"); 
printf ("\n(1) Inserir (2) Excluir \n(3) Exibir Vetor (4) Limpar 
Vetor (0) Fim\n\nEscolha uma opcao: "); 
scanf ("%d", &op); 
 
if ( op == 1) { 
printf ( "\nDigite um numero: "); 
scanf ("%f", &dado); 
push(P,&Topo,dado); 
} 
else if ( op == 2 ) { 
ok = pop(P,&Topo, &dado); 
if ( ok != ERRO) 
printf ( "\nElemento removido: %.2f ", dado); 
} 
else if ( op == 3 ) { 
exibirVetor(P,&Topo); 
} 
else if ( op == 4 ) { 
//Topo=-1; // ou 
iniciaPilha(&Topo); 
} 
} 
return 0; 
} 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 7 DE 13 
1.3 Testes Realizados. 
1.3.1 Primeiro Teste. 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 8 DE 13 
1.3.2 Segundo Teste. 
 
1.3.3 Terceiro Teste. 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 9 DE 13 
2. Exercício 2 da UParte 5. 
2.1 Problema. 
Suponha a seguinte estrutura de pilha sequencial (inteiros): 
 
Escreva um programa em linguagem C, com as funções de 
empilhar e desempilhar os elementos da Pilha. 
2.2 Códigos da Solução. 
Programa exercício2.c 
#include <stdio.h> 
#include <stdlib.h> 
 
#define TAM_VET 50 
#define VERD 1 
#define FALSO 0 
#define ERRO -1 
 
void iniciaPilha (int *Topo) { /* inicia pilha */ 
*Topo = -1; 
} 
int pilhaVazia(int *Topo) { 
if (*Topo == -1) return(VERD); 
return(FALSO); 
} 
int pilhaCheia(int *Topo) { 
if (*Topo == TAM_VET-1) return(VERD); 
return(FALSO); 
} 
int push(int P[], int *Topo, int x) { /* empilha novo elemento */ 
if ((pilhaCheia(Topo)) == (VERD)) { 
printf ( "\n\t****Erro - Ins. Pilha cheia****\n\n"); 
return(ERRO); 
} 
else { 
(*Topo)++; 
P[*Topo] = x; 
} 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 10 DE 13 
return(VERD); 
} 
int pop(int P[], int *Topo, int *x) { /* desempilha novo elemento */ 
if ((pilhaVazia(Topo)) == (VERD)) { 
printf ( "\n\t****Erro - Pilha vazia****\n\n"); 
return(ERRO); 
} 
else { 
*x = P[*Topo]; 
(*Topo)--; 
} 
return(VERD); 
} 
 
void exibirVetor(int P[], int *Topo){ 
int i; 
printf ( "\nExibir elementos preenchidos do Vetor\n"); 
for(i=0;i<=*Topo;i++){ 
printf ( "\nElemento [%d]: %d ", i, P[i]); 
} 
printf ( "\n\n"); 
} 
int main(){ 
int P[TAM_VET]; 
int Topo; 
int ok, op=-1; 
int dado; 
 
iniciaPilha(&Topo); 
while ( op != 0 ) { 
printf ("\n-----------------"); 
printf ("\nMenu"); 
printf ("\n-----------------"); 
printf ("\n(1) Inserir (2) Excluir \n(3) Exibir Vetor (4) 
Limpar Vetor (0) Fim\n\nEscolha uma opcao: "); 
scanf ("%d", &op); 
if ( op == 1) { 
printf ( "\nDigite um numero: "); 
scanf ("%d", &dado); 
push(P,&Topo,dado); 
} 
else if ( op == 2 ) { 
ok = pop(P,&Topo, &dado); 
if ( ok != ERRO) 
printf ( "\nElemento removido: %d ", dado); 
} 
else if ( op == 3 ) { 
exibirVetor(P,&Topo); 
} 
else if ( op == 4 ) { 
//Topo=-1; // ou 
iniciaPilha(&Topo); 
} 
} 
return 0; 
} 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 11 DE 13 
2.3 Testes Realizados. 
2.3.1 Primeiro Teste. 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 12 DE 13 
2.3.2 Segundo Teste. 
 
 
 Estrutura de Dados I 
BRUNO NOGUEIRA [MATRÍCULA: 20101103448] PÁGINA 13 DE 13 
3. Conclusão. 
3.1 Conclusões e Considerações Finais. 
Diferente da fila, que utiliza estruturas com política FIFO, as pilhas 
funcionam com politica de LIFO, ou seja, o último que entra é o 
primeiro a sair. Neste trabalho reforçamos este conceito e 
demostramos a utilização básica do nossa Pilha Estática por meio 
de funções. 
4. Bibliografia. 
• Material de Aula -Estrutura de Dados I. - Parte 5. Pilhas Estáticas, Prof. Dr. 
Carlos A. Sicsú A. do Nascimento. – Cursos de Ciência da Computação, Rio 
de Janeiro, Universidade Veiga de Almeida, 2020. 
• Curso on-line Udemy: Introdução a Estruturas de Dados com a Linguagem C 
<https://www.udemy.com/course/curso-completo-de-linguagem-c-iniciante-ao-
avancado/> Acesso em 30 de abril de 2020. 
	INTRODUÇÃO
	1. Exercício 1 da UParte 5.
	1.1 Problema.
	1.2 Códigos da Solução.
	1.3 Testes Realizados.
	1.3.1 Primeiro Teste.
	1.3.2 Segundo Teste.
	1.3.3 Terceiro Teste.
	2. Exercício 2 da UParte 5.
	2.1 Problema.
	2.2 Códigos da Solução.
	2.3 Testes Realizados.
	2.3.1 Primeiro Teste.
	2.3.2 Segundo Teste.
	3. Conclusão.
	3.1 Conclusões e Considerações Finais.
	4. Bibliografia.

Outros materiais