題目:有乙個帶頭結點的單鏈表l,設計乙個演算法使其元素遞增有序。
關鍵字:帶頭結點單鏈表+遞增有序
思路
採用直接插入排序演算法的思想:就是先分理出頭結點+第乙個結點組成原始新鍊錶,然後依次將後續結點摘下,根據遞增順序接入新鍊錶。
1.先構成只含乙個資料結點的有序單鏈表,
需要變數:l,p,pre(前驅),r(後繼)
2.然後依次掃瞄原單鏈表中剩下的結點p,(直至p==null為止),
需要變數:
3.在有序表(新鍊錶)中通過比較查詢插入p的前驅結點pre,然後將p插入到*pre之後
1)當此時掃瞄到的老表當中的元素》新錶中的第乙個元素,那麼遍歷新錶,直到新錶結束或者找到第乙個》=老表元素的新錶元素。
a.新錶結束,插在新錶末端
b.新錶沒結束,插在新元素之前
2)當此時掃瞄到的老表當中的元素《新錶中的第乙個元素,插在新錶第乙個元素之前
void
sort
(linklist &l)
}
單鏈表(帶頭結點)
按照自己的想法和思路寫了一下帶頭結點的單鏈表,並進行了測試,畢竟自己能力有限,可能有的地方沒有測試到,還可能存在一些潛在的錯誤。標頭檔案 include using namespace std typedef struct node node,link typedef struct list lis...
帶頭結點的單鏈表
帶頭結點的單鏈表 1 頭結點 在棧區開闢,指標域指向第乙個首元結點,資料域不儲存資料,可以儲存當前結點的個數 2 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...
單鏈表 帶頭結點
typedef struct lnodelnode,linklist 頭插法 linklist list headinsert linklist l returnl 尾插法 linklist list tailinsert linklist l r next null 尾結點指標置空 returnl...