Lista Encadeada

CSharp · Console

/Program.cs

using System;
	
public class NoLista
{
    public float info;
    public NoLista proximo;

    //construtor para passar valor ao elemento
    public NoLista(float valor)
    {
        this.info = valor;
        this.proximo = null;
    }
}

public class Lista
{
    private NoLista inicio;
    public Lista()
    {
        this.inicio = null;
    }

    public void Remover(float valor)
    {
        if (this.inicio == null)
        {
            Console.WriteLine("A lista está vazia");
			return;
        }
		
		//buscando o nó com o valor informado.
		var noAnterior = default(NoLista);
		var noAtual = this.inicio;
		do
		{
			if (noAtual.info == valor)
			{
				break;
			}
			noAnterior = noAtual;
			noAtual = noAtual.proximo;
		} while(noAtual != null);
		
		if (noAtual == null)
		{
			Console.WriteLine("O valor não foi encontrado");
			return;
		}
		
		//nó a ser apagado é o no inicial, então setar o proximo o como o inicial.
		if (noAnterior == null)
		{
			this.inicio = noAtual.proximo;
		}
        else
        {
            noAnterior.proximo = noAtual.proximo;
        }
    }
	
	public void Add(float valor)
    {
        if (this.inicio == null)
        {
			this.inicio = new NoLista(valor);
			return;
        }
		
		var noAnterior = default(NoLista);
		var noAtual = this.inicio;
		do
		{
			if (noAtual.info == valor)
			{
				break;
			}
			noAnterior = noAtual;
			noAtual = noAtual.proximo;
		} while(noAtual != null);
		
		if (noAtual != null)
		{
			Console.WriteLine("Este valor já foi adicionado");
			return;
		}
		
		noAnterior.proximo = new NoLista(valor);
    }
	
	public override string ToString()
	{
		var output = "";
		var noAtual = this.inicio;
		while (noAtual != null)
		{
			output += ", " + noAtual.info;
			noAtual = noAtual.proximo;
		}
		return "[" + output.Substring(2) + "]";
	}
}

public class Program
{
	public static void Main()
	{
		var lista = new Lista();
		lista.Add(1);
		lista.Add(2);
		lista.Add(3);
		lista.Add(4);
		
		Console.WriteLine(lista);
		
		lista.Remover(3);
		
		Console.WriteLine(lista);
	}
}
;