2.4編寫代碼,以給定值x為基准將鏈表分割成兩部分,所有小於x的結點排在大於或者等於x的結點之前。


直接創建兩個鏈表,一個放小於x的元素,另一個鏈表大於或等於x的元素。

等到都分完了就合並一下。

public LinkedListNode partition(LinkedListNode node, int x)
{
    LinkedListNode beforeStart = null;
    LinkedListNode beforeEnd = null;
    LinkedListNode afterStart = null;
    LinkedListNode afterEnd = null;
    
    while (node != null)
    {
        LinkedListNode next = node.next;
        node.next = null;
        if (node.data < x)
        {
            if (beforeStart == null)
            {
                beforeStart = node;
                beforeEnd = beforeStart;
            }
            else
            {
                beforeEnd.next = node;
                beforeEnd = node;
            }
        }
        else
        {
            if (afterStart == null)
            {
                afterStart = node;
                afterEnd = afterStart;
            }
            else
            {
                afterEnd.next = node;
                afterEnd = node;
            }
        }
        node = next;
    }
    
    if (beforeStart == null)
    {
        return afterStart;
    }
    beforeEnd.next = afterStart;
    return beforeStart;    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM