Exemplo n.º 1
0
        public Node1721 SwapNodes(Node1721 head, int k)
        {
            Node1721 kthNodeFromBeginning = null;
            Node1721 kthNodeFromEnd       = null;
            var      current      = head;
            var      currentIndex = 0;

            while (current != null)
            {
                currentIndex += 1;
                if (currentIndex == k)
                {
                    kthNodeFromBeginning = current;
                    break;
                }
                current = current.Next;
            }
            var temp        = kthNodeFromBeginning;
            var tempCurrent = head;

            while (temp.Next != null)
            {
                temp        = temp.Next;
                tempCurrent = tempCurrent.Next;
            }
            kthNodeFromEnd = tempCurrent;
            var val = kthNodeFromBeginning.Value;

            kthNodeFromBeginning.Value = kthNodeFromEnd.Value;
            kthNodeFromEnd.Value       = val;
            return(head);
        }
        private static Node1721 CreateLinkedList(int count)
        {
            Node1721 head     = null;
            Node1721 previous = null;
            var      current  = 1;

            while (current <= count)
            {
                var node = new Node1721 {
                    Value = current
                };
                if (previous != null)
                {
                    previous.Next = node;
                }
                else
                {
                    head = node;
                }
                previous = node;
                current += 1;
            }
            return(head);
        }