示例#1
0
        public void ListOnlyHasOneNodeHeadIsTail()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            Assert.Equal(list.Head, list.Tail);
        }
示例#2
0
        public void ListOnlyHasTwoTermsNextValueIsEqualToPrevious()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(2);
            Assert.Equal(list.Find(2), list.Head.Prev);
        }
示例#3
0
        public void HeadPrevIsTailAndTailNextIsHead(int first, int last)
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(first);
            list.AddLast(last);
            Assert.Equal(list.Find(last), list.Find(first).Prev);
            Assert.Equal(list.Find(first), list.Find(last).Next);
        }
示例#4
0
        public void AddingLastMakesNewValueTheTail()
        {
            var list = new CircularlyLinkedList <int>();

            for (int i = 10; i > 0; i--)
            {
                list.AddLast(i);
            }
            Assert.Equal(1, list.Tail.Value);
        }
示例#5
0
        public void RemovingHeadMakesNextValueNewHead()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(2);
            list.AddLast(3);
            list.RemoveFirst();
            Assert.Equal(2, list.Head.Value);
        }
示例#6
0
        public void LastItemNextIsHead()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(2);
            list.AddAfter(list.Find(2), 3);
            Assert.Equal(1, list.Tail.Next.Value);
            //Assert.Equal(3, list.Head.Prev.Value);
        }
示例#7
0
        public void AddFirstChangesHeadToNewValue()
        {
            var list = new CircularlyLinkedList <int>();

            for (int i = 0; i < 11; i++)
            {
                list.AddFirst(i);
            }
            Assert.Equal(10, list.Head.Value);
        }
示例#8
0
        public void RemovingValueSetsPreviousValuesNextToTheRemovedValuesNext()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(3);
            list.AddLast(5);
            list.AddLast(7);
            list.Remove(5);
            Assert.Equal(7, list.Find(3).Next.Value);
        }
示例#9
0
        public void RemovingLastTailIsShiftedToNewValue()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddLast(2);
            list.AddLast(3);
            list.AddLast(4);
            list.RemoveLast();
            Assert.Equal(3, list.Tail.Value);
        }
示例#10
0
        public void AddingAndRemovingIncrementsAndDecrementsTheCount()
        {
            var list = new CircularlyLinkedList <int>();

            list.AddFirst(1);
            list.AddAfter(list.Find(1), 3);
            list.AddBefore(list.Find(3), 2);
            list.AddLast(4);
            Assert.Equal(4, list.Count);
            list.RemoveFirst();
            list.RemoveLast();
            list.Remove(3);
            Assert.Equal(1, list.Count);
        }
示例#11
0
        static void Main(string[] args)
        {
            var list = new CircularlyLinkedList <int>();

            list.AddLast(5);
            list.AddLast(15);
            list.AddLast(25);
            list.AddLast(35);
            list.AddLast(45);

            foreach (var item in list)
            {
                ;
            }
            Console.ReadKey();
        }