Esempio n. 1
0
        static void Main(string[] args)
        {
            Program p = new Program();

            ListNode head = new ListNode(1);
            ListNode ptr = head;
            for (int i = 2; i < 9; i++)
            {
                ptr.next = new ListNode(i);
                ptr = ptr.next;
            }

            p.Print(ptr = head);

            Console.WriteLine();

            p.Print(p.OddEvenList(head));
            Console.WriteLine();
            Console.ReadKey();
        }
Esempio n. 2
0
        public ListNode OddEvenList(ListNode head)
        {
            if (head == null) return head;
            ListNode oddHead, oddPtr, evenHead, evenPtr, ptr;

            oddHead = head;
            oddPtr = head;
            evenHead = new ListNode(-1);
            evenHead.next = head.next;
            evenPtr = evenHead;

            // start from 2
            ptr = head.next;

            bool isOdd = false;
            while (ptr != null)
            {
                if (isOdd)
                {
                    oddPtr.next = ptr;
                    oddPtr = ptr;
                    isOdd = false;
                }
                else
                {
                    evenPtr.next = ptr;
                    evenPtr = ptr;
                    isOdd = true;
                }

                ptr = ptr.next;
            }
            evenPtr.next = null;
            oddPtr.next = evenHead.next;
            return oddHead;
        }
Esempio n. 3
0
 private void Print(ListNode node)
 {
     ListNode ptr = node;
     while (ptr != null)
     {
         Console.Write(ptr.val);
         ptr = ptr.next;
     }
 }