public void Intercalar(int indice, ListaDuplaComNoCabeca <T> lista) { if (EstaVazia()) { Primeira = lista.Primeira; Ultima = lista.Ultima; } else if (indice == 0) { lista.Ultima.Proxima = Primeira; Primeira.Anterior = lista.Ultima; Ultima = lista.Primeira; lista.Primeira = Ultima; Primeira = lista.Primeira; } else if (indice == TotalDeElementos) { Ultima.Proxima = lista.Primeira; lista.Primeira.Anterior = Ultima; Primeira.Anterior = lista.Ultima; lista.Ultima.Proxima = Primeira; Ultima = lista.Primeira; } else { Celula <T> antecessora = PegarCelula(indice - 1); Celula <T> sucessora = PegarCelula(indice); antecessora.Proxima = lista.Primeira; lista.Primeira.Anterior = antecessora; lista.Ultima.Proxima = sucessora; sucessora.Anterior = lista.Ultima; } TotalDeElementos += lista.TotalDeElementos; }
static void Main(string[] args) { ListaDuplaComNoCabeca <int> list = new ListaDuplaComNoCabeca <int>(); list.Adicionar(0); list.Adicionar(1); list.Adicionar(2); list.Adicionar(3); list.Adicionar(4); list.Adicionar(5); System.Console.WriteLine(list); ListaDuplaComNoCabeca <int> list2 = new ListaDuplaComNoCabeca <int>(); list2.AdicionarNoComeco(100); list2.AdicionarNoComeco(100); list2.AdicionarNoComeco(100); System.Console.WriteLine(list2); list.Concatenar(list2); System.Console.WriteLine(list); list.Limpar(); System.Console.WriteLine(list); }
public void Concatenar(ListaDuplaComNoCabeca <T> lista) { Intercalar(TotalDeElementos, lista); }