·

Análise de Sistemas ·

Estrutura de Dados

Send your question to AI and receive an answer instantly

Ask Question

Preview text

BATA PRINTS DO SEU SISTEMA FUNCIONANDO OU GRAVE UM PEQUENO VÍDEO Não se esqueça de colocar na seguinte estrutura seu trabalho envie em PDF CAPA SUMÁRIO CONTEUDO REFERÊNCIAS Trabalho Criar e fazer rodar os códigos dos exemplos de pilha include struct Pilha int topo posição elemento topo int capa float pElem void criarpilha struct Pilha p int c ptopo 1 pcapa c ppElem float malloc c sizeoffloat int estavazia struct Pilha p if p topo 1 return 1 true else return 0 false int estacheia struct Pilha p if ptopo pcapa 1 return 1 else return 0 void empilhar struct Pilha p float v ptopo ppElem ptopo v float desempilhar struct Pilha p float aux ppElem ptopo ptopo return aux float retornatopo struct Pilha p return ppElem ptopo int main struct Pilha minhapilha int capacidade op float valor printf Capacidade da pilha scanf d capacidade criarpilha minhapilha capacidade EAD FAESA Trabalho Continuação do códigos dos exemplos de pilha while 1 loop infinito printfn1 empilhar pushn printf2 desempilhar POPn printf3 Mostrar o topo n printf4 sairn printfnopcao scanfd op switch op case 1 push if estacheia minhapilha 1 printf PILHA CHEIA n else printf VALOR scanff valor empilhar minhapilha valor break case 2 pop if estavaziaminhapilha 1 printf PILHA VAZIAn else valor desempilhar minhapilha printf 1f DESEMPILHADO valor break case 3 mostrar o topo if estavazia minhapilha 1 printf PILHA VAZIA else valor retornatopo minhapilha print f TOPO 1fn valor break case 4 exit0 default printf OPCAO INVALIDA ESTRUTURA DE DADOS PILHA Aluno Curso Disciplina Estrutura de Dados 2023 1 SUMÁRIO 1 Introdução2 2 Desenvolvimento3 3 Referências9 2 1 INTRODUÇÃO No contexto de soluções de problemas lidamos em muitas situações com conjuntos dinâmicos com características específicas Dois conjuntos dinâmicos que possuem características semelhantes são pilha e fila A característica deste conjunto é que só podemos acessar e remover elementos específicos Na pilha o elemento que pode ser acessado e removido é apenas o último a ser inserido já na pilha tratase do elemento mais antigo a ser inserido CORMEN et al 2002 A pilha é uma estrutura de dados linear cujas informações podem ser acessadas somente por uma de duas extremidades seja para armazenar ou recuperar informações Podemos exemplificar como uma pilha de pratos de um restaurante onde o último prato colocado na pilha é o primeiro a ser retirado TABUTI et al 2014 Para exemplificar considere que o iésimo elemento a ser inserido na fila 𝑥𝑖 O topo da fila ficará o último elemento inserido No caso podemos apenas 𝑥𝑛 empilhar um novo elemento acessar ou remover A Figura 1 exemplifica 𝑥𝑛1 𝑥𝑛 𝑥𝑛 estas operações sobre pilhas BALEIRO 2015 Figura 1 Operações sobre a pilha Fonte Baleiro 2015 Apesar de se tratar de uma estrutura simples ela é aplicada em algoritmos muito famosos e utilizados como é o caso da Busca em Profundidade CORMEN et al 2002 3 2 DESENVOLVIMENTO A estrutura de dados pilhas já possuem implementações em algumas linguagens de programação como por exemplo C e Python Porém em linguagens como C não existe esta estrutura implementada nas bibliotecas padrões da linguagem Existem diversas formas de implementar esta estrutura Este trabalho consiste em apresentar uma implementação dessa estrutura na linguagem C Existem diversas formas de implementar as operações de pilha A que foi utilizada neste trabalho consistiu no uso de Tipo Abstratos de Dados TADs por meio de uso de struct A pilha foi caracterizada da seguinte forma struct Pilha int topo int capa float pElem A variável topo armazena a posição que se encontra o topo da pilha A variável capa armazena a capacidade máxima da pilha Já o ponteiro pElem consiste em um vetor contendo os valores da pilha O tamanho deste vetor é igual a capacidade da pilha Foram implementados as seguintes funções para realização das operações de pilha void criarpilhastruct Pilha p int c Inicia a pilha indicando a sua capacidade c int estavaziastruct Pilha p Verifica se a pilha está vazia ou não Caso esteja retorna 1 caso contrário retorna 0 int estacheiastruct Pilha p Verifica se a pilha está cheia capacidade máxima ou não Caso esteja retorna 1 caso contrário retorna 0 void empilharstruct Pilha p float v Empilha o elemento v na pilha float desempilharstruct Pilha p Desempilha um elemento da pilha e retorna este elemento removido float retornatopostruct Pilha p Retorna o topo da pilha Para testar esta estrutura foi criado um menu de opções para que o usuário possa manipular uma pilha O código do menu está descrito abaixo struct Pilha minhapilha 4 int capacidade op float valor printf Capacidade da pilha scanfd capacidade criarpilhaminhapilha capacidade while1 printf 1 empilharpush printf2 desempilharpop printf3 Mostrar o topo printf4 sair printf opcao scanfd op switchop case 1 ifestacheiaminhapilha 1 printf PILHA CHEIA else printf VALOR scanff valor empilharminhapilha valor break case 2 ifestavaziaminhapilha 1 printf PILHA VAZIA else valor desempilharminhapilha printf 1f DESEMPILHADO valor break case 3 ifestavaziaminhapilha 1 printf PILHA VAZIA else valor retornatopominhapilha printf TOPO 1f valor break case 4 exit0 default printf OPCAO INVALIDA 5 Foram realizados testes para verificar o bom funcionamento da estrutura implementada Abaixo são apresentadas as capturas de tela da execução do código 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 VALOR 475 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 VALOR 6 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 60 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 3 TOPO 48 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 48 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 90 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 100 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 PILHA VAZIA 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 3 PILHA VAZIA 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 4 9 3 REFERÊNCIAS BALEIRO R Estrutura de Dados SESES 1º Edição Rio de Janeiro 2015 CORMEN T H et al Algoritmos teoria e prática Editora Campus v 2 p 296 2002 TABUTI L M et al Construção do objeto de aprendizagem Paciência como recurso didático para o ensino da disciplina Estruturas de Dados Nuevas Ideas en Informática Educativa Memorias del IXX Congresso Internacional p 5562 2014 ESTRUTURA DE DADOS PILHA Aluno Curso Disciplina Estrutura de Dados 2023 SUMÁRIO 1 1 Introdução2 2 Desenvolvimento3 3 Referências9 1 INTRODUÇÃO 2 No contexto de soluções de problemas lidamos em muitas situações com conjuntos dinâmicos com características específicas Dois conjuntos dinâmicos que possuem características semelhantes são pilha e fila A característica deste conjunto é que só podemos acessar e remover elementos específicos Na pilha o elemento que pode ser acessado e removido é apenas o último a ser inserido já na pilha tratase do elemento mais antigo a ser inserido CORMEN et al 2002 A pilha é uma estrutura de dados linear cujas informações podem ser acessadas somente por uma de duas extremidades seja para armazenar ou recuperar informações Podemos exemplificar como uma pilha de pratos de um restaurante onde o último prato colocado na pilha é o primeiro a ser retirado TABUTI et al 2014 Para exemplificar considere que xi o iésimo elemento a ser inserido na fila O topo da fila ficará xn o último elemento inserido No caso podemos apenas empilhar um novo elemento xn1 acessar xn ou remover xn A Figura 1 exemplifica estas operações sobre pilhas BALEIRO 2015 Figura 1 Operações sobre a pilha Fonte Baleiro 2015 Apesar de se tratar de uma estrutura simples ela é aplicada em algoritmos muito famosos e utilizados como é o caso da Busca em Profundidade CORMEN et al 2002 2 DESENVOLVIMENTO 3 A estrutura de dados pilhas já possuem implementações em algumas linguagens de programação como por exemplo C e Python Porém em linguagens como C não existe esta estrutura implementada nas bibliotecas padrões da linguagem Existem diversas formas de implementar esta estrutura Este trabalho consiste em apresentar uma implementação dessa estrutura na linguagem C Existem diversas formas de implementar as operações de pilha A que foi utilizada neste trabalho consistiu no uso de Tipo Abstratos de Dados TADs por meio de uso de struct A pilha foi caracterizada da seguinte forma struct Pilha int topo int capa float pElem A variável topo armazena a posição que se encontra o topo da pilha A variável capa armazena a capacidade máxima da pilha Já o ponteiro pElem consiste em um vetor contendo os valores da pilha O tamanho deste vetor é igual a capacidade da pilha Foram implementados as seguintes funções para realização das operações de pilha void criarpilhastruct Pilha p int c Inicia a pilha indicando a sua capacidade c int estavaziastruct Pilha p Verifica se a pilha está vazia ou não Caso esteja retorna 1 caso contrário retorna 0 int estacheiastruct Pilha p Verifica se a pilha está cheia capacidade máxima ou não Caso esteja retorna 1 caso contrário retorna 0 void empilharstruct Pilha p float v Empilha o elemento v na pilha float desempilharstruct Pilha p Desempilha um elemento da pilha e retorna este elemento removido float retornatopostruct Pilha p Retorna o topo da pilha Para testar esta estrutura foi criado um menu de opções para que o usuário possa manipular uma pilha O código do menu está descrito abaixo struct Pilha minhapilha int capacidade op float valor 4 printf Capacidade da pilha scanfd capacidade criarpilhaminhapilha capacidade while1 printf 1 empilharpush printf2 desempilharpop printf3 Mostrar o topo printf4 sair printf opcao scanfd op switchop case 1 ifestacheiaminhapilha 1 printf PILHA CHEIA else printf VALOR scanff valor empilharminhapilha valor break case 2 ifestavaziaminhapilha 1 printf PILHA VAZIA else valor desempilharminhapilha printf 1f DESEMPILHADO valor break case 3 ifestavaziaminhapilha 1 printf PILHA VAZIA else valor retornatopominhapilha printf TOPO 1f valor break case 4 exit0 default printf OPCAO INVALIDA 5 Foram realizados testes para verificar o bom funcionamento da estrutura implementada Abaixo são apresentadas as capturas de tela da execução do código 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 VALOR 475 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 VALOR 6 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 60 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 3 TOPO 48 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 48 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 90 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 100 DESEMPILHADO 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 2 PILHA VAZIA 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 3 PILHA VAZIA 1 empilharpush 2 desempilharpop 3 Mostrar o topo 4 sair opcao 4 3 REFERÊNCIAS 9 BALEIRO R Estrutura de Dados SESES 1º Edição Rio de Janeiro 2015 CORMEN T H et al Algoritmos teoria e prática Editora Campus v 2 p 296 2002 TABUTI L M et al Construção do objeto de aprendizagem Paciência como recurso didático para o ensino da disciplina Estruturas de Dados Nuevas Ideas en Informática Educativa Memorias del IXX Congresso Internacional p 5562 2014