小白演算法積累 單鏈表6 帶頭結點單鏈表 遞增有序

2021-10-02 21:38:39 字數 625 閱讀 6979

題目:有乙個帶頭結點的單鏈表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...