/本程式演示鍊錶的兩種排序方法
//當然還可以其他的一些排序方法
//比如選擇法
//但是只要搞懂了鍊錶的連線,插入方法
//其他排序方法都易懂
#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 考拉想知道自己的...