tag:blogger.com,1999:blog-49686139326461086362024-02-20T15:40:44.633+00:00Artigos de Computação por John MendesEste blog é sobre computação. Estarão sendo publicados nesta área artigos relacionados a computação, porém, com o perfil acadêmico e científico e sempre citando as suas devidas referências, respeitando assim seus autores.
A espectativa é que os artigos sejam produtivos e que atinjam seu objetivo que é informar.
Os leitores que utilizarem destes artigos, devem citar a devida fonte.Anonymoushttp://www.blogger.com/profile/01319892744625364548noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-4968613932646108636.post-6480236995149447352011-03-06T17:42:00.000+00:002012-01-24T23:52:22.533+00:00Estruturas de Dados: Listas, Filas e Pilhas<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Estrutura de dados é a forma como os dados podem ser dispostos de forma organizada para habilitar de uma forma formal acessá-los, alterá-los ou removê-los de forma eficiente.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">O objetivo da estrutura de dados é dispor os dados de forma coerente para seu armazenamento ou acesso. A organização e os métodos que acessam e manipulam estes dados estruturados são chamados de algoritmos de estruturas de dados, como fila, lista, pilha, árvore, grafo, etc;</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">As estruturas de dados podem ser organizadas ou armazenadas utilizando de formas ou estruturas homogêneas e heterogêneas. As estruturas homogêneas são representadas por vetores e matrizes que tem como objetivo de armazenamento de dados de um tipo único, como inteiros ou strings. Neste caso, estas estruturas são utilizadas em situações onde somente um tipo de dados é suficiente para organização das informações, mas, isso não é o suficiente ou não atende a todos os cenários.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">As estruturas de dados heterogêneas vem suprir a lacuna das estruturas homogêneas. As estruturas heterogêneas permitem a composição ou armazenamento de dados de diferentes tipos simultaneamente, como, inteiros, strings, float, double, etc.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Os vetores ou arrays são estruturas de dados chamadas de lineares e estáticas que permitem um número finito ou fixo de elementos de um determinado tipo em seu conteúdo. O acesso a este tipo de estrutura é muito rápido pois necessita de apenas seu índice para acessar qualquer item em sua estrutura. O ponto negativo deste tipo de estrutura é a remoção dos elementos, visto que na remoção, deixará um espaço "vazio" entre os elementos, sendo assim, deve haver um algoritmos que possa reorganizar os dados para deixá-los de forma organizada sem estes espaços.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Os arrays podem ser unidimensional, bidimensional ou ter mais dimensões se necessário. Porém, os uni ou bidimensionais são os mais utilizados. </span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Essa estrutura é muito recomendada quando a quantidade de dados não se alteram durante seu armazenamento ou remoção ou mesmo através do tempo.</span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Exemplo: String[] S = new String[5];</span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></span><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Lista</span></b><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></b><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Uma Lista é uma estrutura de dados linear. Podemos armazenar dados em uma estrutura homogênea, porém, como dito anteriormente pode haver uma limitação quanto a dados e quanto a manipulação destes dados.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Podemos utilizar uma estrutura heterogênea ligando os dados entre sí. Essa ligação pode ser direcional ou bidirecional. Basicamente uma lista ligada direcional ou bidirecional é composta por nós que apontam para o próximo ou anterior elemento da lista, com exceção do último, que não aponta para ninguém. Para compor uma lista encadeada, basta guardar seu primeiro elemento.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Numa lista encadeada existem dois ou três campos. Um campo reservado para colocar o dado a ser armazenado e os outros campos para apontar para o próximo ou anterior elemento da lista. Normalmente a implementação é feita com ponteiros.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br /></span><br />
<span style="font-family: Verdana, sans-serif;">Na linguagem C podemos exemplificar da seguinte forma:</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><br />
<span style="font-family: Verdana, sans-serif;">struct lista {</span><br />
<span style="font-family: Verdana, sans-serif;"> struct lista *ponteiroanterior;</span><br />
<span style="font-family: Verdana, sans-serif;"> int valor;</span><br />
<span style="font-family: Verdana, sans-serif;"> struct lista *ponteiroproximo;</span><br />
<span style="font-family: Verdana, sans-serif;">}</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Quando utilizamos uma lista em uma estrutura heterogênea, onde pode-se adicionar novos elementos quando necessário, faz desta estrutura de dados muito recomendada para casos onde a quantidade de informação é indeterminada e a ordem de armazenamento não é importante. Porém, esta estrutura permite de forma mais fácil de se aplicar algoritmos de ordenação que permitiria classificar os dados.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">As listas são bastante utilizadas quando não há uma ordem para inserir ou remover os dados, podendo estes dados serem inseridos no início ou fim da lista ou mesmo entre os elementos já existentes.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b>Fila</b></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">As filas são estruturas baseadas no princípio FIFO (first in, first out) ou PEPS (primeiro a entrar, primeiro a sair), em que os elementos que foram inseridos no início são os primeiros a serem removidos. Uma fila possui duas funções básicas: Enfilera, que adiciona um elemento ao final da fila, e Desinfilera, que remove o elemento no início da fila. A operação Desinfilera só pode ser aplicado se a fila não estiver vazia, portanto, há também outras funções como checar se a fila esta vazia e liberar a fila que também são utilizadas.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Uma Fila é recomendada para casos em que os dados armazenados possuem uma ordem onde o item mais velho da fila é o primeiro a ser removido.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><b>Pilha</b></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Uma pilha é um tipo de estrutura de dados baseado no princípio de LIFO (Last In First Out) ou UEPS (último a entrar, primeiro a sair) onde os elementos que foram inseridos por último serão os primeiros a serem removidos.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Pilhas são usadas em diversos sistemas e como exemplo muito próximo nosso são as alterações feitas por nós que são devidamente armazenadas em uma Pilha o que nos permite "Voltar" e desfazer cada ação nos aplicativos como Microsoft Word, Excel entre outros.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Uma Pilha é muito recomendada para casos em que os dados armazenados mais novos ou recentes devem ser removidos primeiros.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"><br />
</span></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Tanto a Lista, Fila quanto a Pilha podem ser desenvolvidas ou programadas através de encadeamento dos dados utilizando de estruturas heterogêneas.</span><br />
<div>
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div>
<div>
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Referências:</span></div>
<div>
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div>
<div>
<a href="http://pt.wikipedia.org/wiki/Estrutura_de_dados"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">http://pt.wikipedia.org/wiki/Estrutura_de_dados</span></a></div>
<div>
<a href="http://pt.wikipedia.org/wiki/Lista"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">http://pt.wikipedia.org/wiki/Lista</span></a></div>
<div>
<a href="http://pt.wikipedia.org/wiki/FIFO"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">http://pt.wikipedia.org/wiki/FIFO</span></a></div>
<div>
<a href="http://pt.wikipedia.org/wiki/LIFO"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">http://pt.wikipedia.org/wiki/LIFO</span></a></div>
<div>
<br /></div>Anonymoushttp://www.blogger.com/profile/01319892744625364548noreply@blogger.com6tag:blogger.com,1999:blog-4968613932646108636.post-7741821226884089272007-06-17T16:48:00.000+01:002007-06-17T18:50:04.814+01:00Bem Vindo.Olá a todos.<br /><br />Bem vindo a meu blog sobre computação. Estarei publicando nesta área artigos relacionados a computação, porém, com o perfil acadêmico e científico e sempre citando as suas devidas referências, respeitando assim, seus autores.<br /><br />Espero que gostem e postem seus comentários.<br /><br />Um abraço,<br /><br />MSc. John MendesAnonymoushttp://www.blogger.com/profile/01319892744625364548noreply@blogger.com1