public void Test_LinkedList_Delete() { var list = new VLinkedList <int>(); list.Add(1); list.Add(2); list.Add(3); Assert.Equal(3, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(3, list.Last()); list.Delete(4); Assert.Equal(3, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(3, list.Last()); list.Delete(2); Assert.Equal(2, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(3, list.Last()); list.Delete(1); Assert.Equal(1, list.Count()); Assert.Equal(3, list.First()); Assert.Equal(3, list.Last()); list.Delete(3); Assert.Equal(0, list.Count()); Assert.Equal(0, list.First()); Assert.Equal(0, list.Last()); list.Add(4); list.Add(5); list.Add(6); Assert.Equal(3, list.Count()); Assert.Equal(4, list.First()); Assert.Equal(6, list.Last()); list.Delete(4); Assert.Equal(2, list.Count()); Assert.Equal(5, list.First()); Assert.Equal(6, list.Last()); list.Delete(6); Assert.Equal(1, list.Count()); Assert.Equal(5, list.First()); Assert.Equal(5, list.Last()); list.Delete(5); Assert.Equal(0, list.Count()); Assert.Equal(0, list.First()); Assert.Equal(0, list.Last()); }
public void Test_LinkedList_Add() { var list = new VLinkedList <int>(); Assert.Equal(0, list.Count()); list.Add(1); Assert.Equal(1, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(1, list.Last()); list.Add(2); Assert.Equal(2, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(2, list.Last()); list.Add(3); Assert.Equal(3, list.Count()); Assert.Equal(1, list.First()); Assert.Equal(3, list.Last()); }
///2.2. Реализуйте алгоритм для нахождения в односвязном списке k-го элемента с конца. public static T GetElementFromEnd <T>(VLinkedList <T> list, int numFromEnd) { var realNum = list.Count() - numFromEnd; var node = list.FirstNode(); for (int i = 0; i < realNum - 1; i++) { node = node.Next; } return(node.Value); }