您好,登錄后才能下訂單哦!
本篇內容主要講解“Partition相關問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Partition相關問題怎么解決”吧!
題意:
根據給定鏈表和給定值X,把大于X值的放在X右邊,小于X值的放在X左邊。并不改變相對位置,比如4和3都大于等于3,那么他們移到右邊后位置仍為4在前,3在后。
思路:
1)鏈表為空或者只有一個節點,返回即可。
2)定義兩個鏈表list和back,分別存放小于X節點的鏈表和大于等于X的鏈表。使用二級指針方便頭節點處理。
3)while循環結束后,list和back鏈表的最后節點的next并未置NULL。所以把back鏈表尾節點next置NULL。并把back追加到list后面即可。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* partition(struct ListNode* head, int x) { if ( head == NULL || head->next == NULL ) { return head; } struct ListNode *list = NULL; struct ListNode **first = &list; struct ListNode *back = NULL; struct ListNode **second = &back; while ( head ) { if ( head->val < x) { *first = head; first = &(*first)->next; } else { *second = head; second = &(*second)->next; } head = head->next; } *second = NULL; *first = back; return list; }
到此,相信大家對“Partition相關問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。