鍊錶插入排序

2021-07-29 13:12:33 字數 778 閱讀 7814

題目:用插入排序對鍊錶排序

思路:建立乙個新的鍊錶,將目標鍊錶依次插入先煉表中,小就插到前面,大就插到後面,如此一來,新的鍊錶就是目標鍊錶按大小次序排列的了。先看第一步,將目標鍊錶的第乙個元素插入所建立的空鍊錶,具體是先建立乙個地值存下頭節點的下乙個節點的位置,將頭節點的next變為空,連到一開始建立好的空節點上,如此一來,新的鍊錶有了最初的乙個值。方便後面的數進行比較。每一次都從新鍊錶的頭開始遍歷,在後續插入中有兩種情況。一是遇到比node->next->val小的數,停下遍歷,將目標鍊錶中當前的第乙個數插入到node得後面;二是遍歷完新鍊錶後也沒有找到比目標鍊錶當前第乙個節點的數小的數,也就是說當前目標鏈的第乙個節點的值比新鍊錶的所有的節點的數都要大,理應插入到新鍊錶的最後,方法和最開始在新的空煉表中插入第乙個元素相同的做法。

**:#include

using namespace std;

class listnode

};class solution

listnode *temp=head->next;

head->next=node->next;

node->next=head;

head=temp;

}return dummy->next;}};

int main()

感想:這個題明顯的體現了鍊錶比陣列好的一點,不用某些元素依次全部後移,只需要改變兩個指標就可以了。插入排序這種做法彷彿開啟我思考問題的另一扇門,不在原地變化,建立乙個新的東西去承載這些變化,這還真是腦洞大開。也讓我體會到做鍊錶題的多變性。

鍊錶倒數第n個節點

鍊錶插入排序

void insertsort list sortascount,node node else p prior next q q next p int sortwithinsetmethod list sortasdata wchar pp p data if isnum pp int i 0 i ...

鍊錶插入排序

題目 用插入排序對鍊錶排序 樣例 given1 3 2 0 null,return0 1 2 3 null 思路 新建乙個以dummy開頭的鍊錶,並將dummy賦初值為0。令node dummy,通過移動新煉表中的node與要排序的鍊錶中的head,並比較node與head的值,來實現排序。如果he...

鍊錶插入排序

題目 鍊錶插入排序 問題描述 用插入排序對鍊錶排序 思路 申請新鍊錶,插入元素,與鍊錶中的元素比較大小,如果大,就插到後面,若小,就插在前面。class solution listnode temp head next head next node next node next head head ...