Implementação de Pilha, Fila e Lista em C#

Computação6,13 KB

Classe Pilha

public class Pilha

{
    private const int CAPACIDADE = 5; // define o tamanho máximo desta pilha.
    private string[] dados = new string[CAPACIDADE]; // vetor para guardar os dados da pilha.
    private int topo = -1; // variável que indicará a posição no vetor do topo da pilha.

    public int Tamanho() // este método informa o tamanho da pilha
    {
        return topo + 1; // lembre-se que o vetor inicia na posição zero...
    }

    public bool Vazia() // este método retorna true se a pilha estiver vazia
    {
        return Tamanho() == 0;
    }

    public void Empilha(string p_valor) // este método empilha um valor string na pilha
    {
        if (Tamanho() != CAPACIDADE)
        {
              topo++;
              dados[topo] = p_valor;
        }
        else
        {
              throw new Exception("A pilha está cheia!!!");
        }
    }

    public string Desempilha() // este método desempilha um valor da pilha
    {
        if (Vazia() == true)
        {
              throw new Exception("A pilha está vazia!!!");
        }
        else
        {
              topo--;
              return dados[topo + 1];
        }
    }

    public string RetornaTopo() // este método devolve o valor que está no topo
    {
        if (Vazia() == true)
            throw new Exception("A pilha está vazia!!!");
        else
            return dados[topo];
    }

}

Classe Fila

public class Fila

{
    const int CAPACIDADE = 5; // capacidade máxima da fila
    private int quantidade = 0; // quantidade de elementos enfileirados
    private int inicio = 0; // indica qual a primeira posição da fila
    private int fim = 0; // indica a próxima posição
    private string[] dados = new string[CAPACIDADE]; // armazenar os dados da fila

    public int tamanho() // retorna o tamanho da fila
    {
        return quantidade;
    }

    public void enfileirar(string p_valor) // enfileira um valor string
    {
        if (tamanho() == CAPACIDADE)
        {
              throw new Exception("A fila está cheia!!!!");
        }
        else
        {
              dados[fim] = p_valor;
              fim = (fim + 1) % CAPACIDADE;
              quantidade++;
        }
    }

    public string desenfileira() // remove o primeiro elemento da fila e devolve
    {
        if (tamanho() == 0)
        {
              throw new Exception("A fila está vazia!");
        }
        else
        {
              string valor = dados[inicio];
              inicio = (inicio + 1) % CAPACIDADE;
              quantidade--;
              return valor;
        }
    }

}

Classe Lista

public class Lista

{
    private const int CAPACIDADE = 10;
    private string[] dados = new string[CAPACIDADE];
    private int quantidade = 0;

    public int tamanho()
    {
        return quantidade;
    }

    public void insereNaPosicao(int p_posicao, string p_valor)
    {
        if (tamanho() == CAPACIDADE)
            throw new Exception("A lista está cheia!!!\n\n");
        else if (p_posicao > tamanho())
            throw new Exception("Não é possível inserir nesta posição");
        else
        {
            quantidade++;
            for (int i = tamanho() - 1; i > p_posicao; i--)
            {
                  dados[i] = dados[i - 1];
            }
            dados[p_posicao] = p_valor;
        }
    }

    public string removeDaPosicao(int posicao)
    {
        if (tamanho() == 0)
            throw new Exception("A lista está vazia!!!");
        else if (posicao > tamanho() - 1)
            throw new Exception("Posição inválida!!!");
        else
        {
            string aux = dados[posicao];
            for (int i = posicao; i < tamanho() - 1; i++)
            {
                  dados[i] = dados[i + 1];
            }
            quantidade--;
            return aux;
        }
    }

    public void insereNoInicio(string p_valor)
    {
        insereNaPosicao(0, p_valor);
    }

    public void insereNoFim(string p_valor)
    {
        insereNaPosicao(tamanho(), p_valor);
    }

    public void imprimeLista()
    {
        Console.WriteLine("\n\nImpressão dos dados da lista:\n");
        for (int i = 0; i < tamanho(); i++)
        {
            Console.WriteLine(dados[i]);
        }
    }

}

Baixar

PDF Word HTML