/// <summary> /// Exercícios de lista encadeada: /// (a) Recebe um número inteiro e o insere no fim da lista /// (b) Retira o primeiro elemento da lista e o retorna /// (c) Recebe um valor inteiro (x) que é um elemento da lista /// e o uma chave. O método deve inserir o valor da chave após /// o elemento x. Verifique se o elemento passado como parâmetro /// , x, pertence à lista. Caso nãoo exista, informe ao usuário. /// (d) retira todos os elementos cujo campo value é um número /// ímpar. /// (e) Pesquisa por um determinado elemento da lista. Se o elemento /// procurado não existir, informe ao usuário e retorne -1. Caso /// contrário, retorne o valor do elemento. /// (f) Procura e retorna o menor elemento da lista. /// (g) O método recebe uma posição da lista, índice e retira o elemento /// que corresponde à mesma. Seu método deve verificar se o índice é /// válido, sem fazer contagem da quantidade de elementos da lista. Retorne /// o elemento retirado caso o índice seja válido. Caso contrário retorne -1. /// Considere o nó sentinela possuindo o índice 0. /// (h) Todos os métodos devem ser implementados e testados. /// </summary> static void Main(string[] args) { SinglyLinkedList list = new SinglyLinkedList(); list.Insert(1); list.Insert(2); list.Insert(3); list.Insert(4); list.Insert(5); list.Insert(6); list.Insert(7); list.Insert(8); list.Print(); Console.WriteLine(); // (a). list.InsertAfterAll(912); Console.WriteLine("(a)."); list.Print(); Console.WriteLine(); // (b). Console.WriteLine("(b). = " + list.FindRemoveAndReturn(3)); list.Print(); Console.WriteLine(); // (c) Console.WriteLine("(c)."); list.InsertAfter(555, 4); list.Print(); Console.WriteLine(); // (d). Console.WriteLine("(d)."); list.RemoveOdds(); list.Print(); Console.WriteLine(); // (e). Console.WriteLine("(e). = " + list.SearchValue(2)); list.Print(); Console.WriteLine(); // (f). Console.WriteLine("(f). = " + list.Min()); list.Print(); Console.WriteLine(); // (g). Console.WriteLine("(g)."); list.RemoveAt(2); list.Print(); Console.WriteLine(); }
static void Main(string[] args) { SinglyLinkedList list = new SinglyLinkedList(); list.AddFirst(1); list.AddFirst(10); Console.WriteLine("Items in the list are: "); list.PrintList(); list.AddLast(12); list.PrintList(); list.RemoveFirst(); list.PrintList(); list.AddLast(13); Console.WriteLine("----------------------------"); list.PrintList(); Console.WriteLine("----------------------------"); list.RemoveLast(); list.PrintList(); Console.WriteLine("----------------------------"); list.Remove(12); list.PrintList(); Console.ReadLine(); }
private SinglyLinkedList(T value, SinglyLinkedList <T> next) { Value = value; Next = next; Length = 1 + next.Length; }
public void Dispose() { list = null; index = -1; }
public Enumerator(SinglyLinkedList <T> list) { this.list = list; index = -1; }
static void Main(string[] args) { SinglyLinkedList test = new SinglyLinkedList(); Console.WriteLine("Test: "); test.AddFirst(10); test.AddFirst(20); test.AddFirst(30); test.AddFirst(40); Console.WriteLine("Singly Linked List After: AddFirst(10), AddFirst(20), AddFirst(30), AddFirst(40)"); test.Print(); Console.WriteLine(); test.AddLast(50); test.AddLast(60); Console.WriteLine("Singly Linked List After: AddLast(50), AddLast(60)"); test.Print(); Console.WriteLine(); test.Append(70); Console.WriteLine("Singly Linked List After: Append(70)"); test.Print(); Console.WriteLine(); test.DeleteFirst(); test.DeleteFirst(); Console.WriteLine("Singly Linked List After: DeleteFirst() Twice"); test.Print(); Console.WriteLine(); test.DeleteLast(); Console.WriteLine("Singly Linked List After: DeleteLast()"); test.Print(); Console.WriteLine(); test.Insert(4, 3); test.Insert(5, 1); Console.WriteLine("Singly Linked List After: Insert(4,3), Insert(5,1)"); test.Print(); Console.WriteLine(); test.Delete(2); test.Delete(3); Console.WriteLine("Singly Linked List After: Delete(2), Delete(3)"); test.Print(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Error Test: "); Console.WriteLine("No Values Have Been Inserted Into Linked List"); Console.WriteLine(); SinglyLinkedList error = new SinglyLinkedList(); Console.WriteLine("Singly Linked List Error Message After: Print()"); Console.WriteLine(); error.Print(); Console.WriteLine(); Console.WriteLine("Singly Linked List Error Message After: DeleteFirst()"); Console.WriteLine(); error.DeleteFirst(); Console.WriteLine(); Console.WriteLine("Singly Linked List Error Message After: DeleteLast()"); Console.WriteLine(); error.DeleteLast(); Console.WriteLine(); Console.WriteLine("Singly Linked List After Insert(27, 0) With No Values In List"); Console.WriteLine(); Console.WriteLine("AddFirst() Will Be Called Instead: "); Console.WriteLine(); error.Insert(27, 0); error.Print(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Singly Linked List Error Message After Delete() Called Twice"); Console.WriteLine(); error.Delete(0); error.Print(); error.Delete(0); }
public static (bool, SinglyLinkedList <T>) Find <T>(this SinglyLinkedList <T> list, T value) { var found = list.FirstOrDefault(item => item.Value.Equals(value)); return(found != null, found); }