考研 王道資料資料結構課後習題第二章第六道
6.有乙個帶頭節點的單鏈表l,設計乙個演算法使其元素遞增有序
void sort(linklist &l) //外層迴圈完畢
//如何保證有序?
//由於第一次向被查煉表中插節點時,被插入鍊錶中只含有頭節點(不含資料)和初始鍊錶的第乙個節點,所以,
//所以第一次遍歷前,被查鍊錶中只有乙個有效的節點
//在第一次執行遍歷完的時候就是有序的
//然後每次執行遍歷都將有序
//從而保證最後是有序的
//思想就是,方向是對的,每步都沒錯,那麼結果肯定沒錯。
//演算法正式開始
lnode *p = l->next,*pre;
lnode *r=p->next; //p和r為資料鏈表工作指標
//pre是又當爹又當媽的被插入鍊錶的工作指標,在被插入鍊錶中,既做插入位置的標記指標又做插入操作之前的控制比較指標
//pre相當於插入操作的p(插入操作指標) pre->next相當於插入操作的q(比較指標)
//而被插入鍊錶和資料鏈表的定義在下一段的解釋說明中
//在本函式的變數定義階段,共定義了三個指標變數 分別為pre/p/r 注意**指標,防止出現懸垂指標
p->next=null; //頭節點和第乙個節點與之後的鍊錶進行斷鏈操作
//現在有兩個鍊錶
//至此,頭節點和第乙個節點相連為被插入鏈, 第二個節點和剩下的節點相連為資料鏈
p=r;//p和r指向第二個節點
printf("本演算法實現將單鏈表l的節點重新排序,使其遞增有序");
while(p)
//比較完成後,開始進行被插入鍊錶的插入操作
p->next=pre->next; //還是先右後左向被插入鍊錶的合適的位置插入資料鏈表的頭節點
pre->next=p;
p=r; //將p再次放在被刪除頭節點的資料鏈表的頭節點上
} //**pre/p/r指標,防止出現野指標,即懸垂指標
pre=null;
p=null;
r=null;
}// void sort(linklist &l)函式結束
第二章第六天介面
介面的概述 介面 介面就是一組功能 能力 規範 特點 實現多型 解決了繼承的單一繼承的問題。注意事項 多組合,幫助程式功能與功能之間解耦,程式的擴充套件性好 維護性好 介面側重能力,忽略實現細節 面向介面程式設計,乙個介面可以同時繼承多個介面 例一 對貫穿本書的案例電子寵物系統的類結構進行重構,要求...
F 入門 第二章 F 基礎 第六節 匿名函式
關於用let語句定義函式的方法在前面一節已做了介紹,除此之外f 中還可以使用匿名函式。匿名函式定義如下所示。定義匿名函式 fun 引數1 引數2 函式體 fun關鍵字表示開始定義匿名函式。讓我們看乙個具體的示例。匿名函式示例 fun x x 1 val it int int 以上是加1的匿名函式。從...
F 入門 第二章 F 基礎 第六節 匿名函式
關於用let語句定義函式的方法在前面一節已做了介紹,除此之外f 中還可以使用匿名函式。匿名函式定義如下所示。定義匿名函式 fun 引數1 引數2 函式體 fun關鍵字表示開始定義匿名函式。讓我們看乙個具體的示例。匿名函式示例 fun x x 1 val it int int 以上是加1的匿名函式。從...