CSharp · Console
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);
}
}