Estruturas De Dados Em C# - Fila E Pilha
Monografias: Estruturas De Dados Em C# - Fila E Pilha. Pesquise 862.000+ trabalhos acadêmicosPor: tiaggo_gto • 29/5/2014 • 1.310 Palavras (6 Páginas) • 1.029 Visualizações
Estruturas de Dados em C#: Part 2 -> Pilha
Nessa série de estruturas de dados em C#, vou regredir um pouco, pois acabei por engano me esquecendo de estruturas mais simples, que devem ser mostradas antes da Lista Simplesmente Encadeada, Pilha e Fila.
Hoje mostrarei uma pilha aqui. A estrutura de dados Pilha(Stack), como o próprio nome já diz se dispõe a empilhar os dados, como se fossem uma pilha de livros.
Essa estrutura é do tipo LIFO, last-in-first-out, ou seja o último a entraré o primeiro a sair, da mesma forma como seria uma pilha de livros, o último livro depositado na pilha precisa ser o primeiro a sair para não desmontar a pilha e desorganizar tudo que estava empilhado.
Nossa classe Stack é bem simples, com propriedades quem informam se a pilha está vazia e quantos objetos estão empilhados na pilha e métodos para remoção, inserção e listagem de objetos, seguindo a linha de raciocínio LIFO.
Um método interessante é o ToArray(), que gera um array da sua pilha, no caso um array seria a primeira estrutura um pouco mais complexa para se armazenar dados, mas não precisamos abordar ele aqui pois já é de conhecimento de todos certo?
Antes da codificação vale lembrar que a biblioteca de classes do .NET Framework já vem com uma implementação para pilha de dados LIFO, ela está localizada no Namespace System.Collections.Stack, você pode ver que os métodos são muito próximos desses mostrados aqui.
Vejam as classes, Stack e Objects, onde objects seria uma coleção de objetos para facilitar o nosso trabalho, deixando tudo mais limpo, como no exemplo anterior da Lista Simplesmente Encadeada.
using System;
using System.Collections;
namespace Estruturas
{
public class Stack
{
private object top = null;
private Objects objs = new Objects();
private bool isEmpty = true;
private int count = 0;
public bool IsEmpty
{get{return isEmpty;}}
public int Count
{get{return count;}}
public void Push(object obj)
{
objs.Add(obj);
count++;
top = obj;
if(isEmpty)
isEmpty = false;
}
public object Pop()
{
object robj = null;
if(!isEmpty)
{
robj = top;
objs.Remove(count–);
if(count > 0)
top = objs[count-1];
else
{
top = null;
isEmpty = true;
}
}
return robj;
}
public object Peek()
{return top;}
public void Clear()
...