Baixe o app para aproveitar ainda mais
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.
Compartilhar