鍊錶排序的兩種實現方法

2021-06-26 04:15:05 字數 1252 閱讀 2896

/本程式演示鍊錶的兩種排序方法

//當然還可以其他的一些排序方法

//比如選擇法

//但是只要搞懂了鍊錶的連線,插入方法

//其他排序方法都易懂

#include

using namespace std;

struct list ;

list* creat()//建立鍊錶的方式有點奇怪,可是不想改了,呵呵

p1->next=null;

list*temp=head->next;

while(temp!=null)

return head; }

//方案一:冒泡法(與陣列中排序類似),在本程式中數值(num)按從大到小排列

//其基本思想為:指標p3始終指向p2的前乙個節點,

//p2始終取煉表中p2以後節點的最小值

//指標p5代表p2以後節點中最小值那個節點,而p4始終指向p5的前乙個節點

//找最小值節點的方式與第一種方案冒泡法排序類似

list* sort(list*head)

p1=p1->next; }

if(flag)//交換兩個節點的順序,值小的節點往前調

else//這種情況為要交換的兩個節點不相鄰

} p3=p3->next; }

cout<

list*temp=head;

temp=temp->next;

while(temp!=null)

cout<

return head; }

//方案二:在原煉表中找出最小的節點並併入另乙個新煉表中(頭節點為head_2)

//反覆重複這個操作,直到原煉表只剩下乙個節點為止

//則原煉表中的節點全部併入並重新組合成了乙個新鍊錶

/*list*sort(list*head)

p1=p1->next; }

if(flag)

else//此種情況為頭節點後面第乙個節點<=它後面所有節點的值(即num的值),要慎重考慮

p6->next=p5;

p6=p6->next; }

p6->next=p3->next;

p6=p6->next;

return head_2;

}*/

int main()

//感覺煉表處理起來特別複雜,指來指去搞得頭昏腦漲的

//可以通過畫一些簡單的圖來幫助理解

//很容易出錯

反轉鍊錶(兩種實現)

反轉鍊錶反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 方法一 前插法 這道題目我們可以先建立乙個新的表頭,然後按正序每抓取到乙個原鍊錶的節點,就前插到這個新的煉表裡,最後我們就可以得到乙個恰好為原鍊錶反序的新鍊錶 struct listnode rev...

List排序的兩種實現方法

利用collections.sort方法可以對列表進行排序collections有兩個sort方法 1.sort listlist 2.sort listlist comparator c 方法一 只需要傳入乙個list即可,但是該list中的元素需要實現comparable介面,覆蓋compare...

兩種排序方法

題目描述 考拉有n個字串字串,任意兩個字串長度都是不同的。考拉最近學習到有兩種字串的排序方法 1.根據字串的字典序排序。例如 car carriage cats doggies koala 2.根據字串的長度排序。例如 car cats koala doggies carriage 考拉想知道自己的...