單鏈表 單鏈表拆分為A和B鍊錶(尾插法 頭插法)

2021-10-12 12:24:42 字數 908 閱讀 2205

題意:

設c為一線性表,採用帶頭結點的單鏈表hc存放,設計乙個就地演算法,將其拆分為兩個線性表,每個線性表均採用帶頭結點的單鏈表儲存,使得:

a = ,

b =

單鏈表的儲存結構:

typedef

struct linklist

分析:

看到這個題目又有幾分類似,之前的拆分為兩個線性表,兩個鍊錶都是正序,所以兩者都可以用尾插法。

但是,這裡乙個正序,乙個逆序。

所以,這裡要混合使用頭插法和尾插法分別建立ab表。

思路:

1,定義兩個頭結點(乙個已存在),定義乙個遍歷的變數p,定義乙個尾指標ra,並定義乙個儲存p的指標變數q.

2.尾指標賦值,生成乙個頭結點。

3.通過迴圈while,條件為p!=null.

3.1尾插法,ra->next = p;ra = p; 後移p=p->next; q = p->next;

3.2頭插法,p->next = hc->next; hc->next = p;

不斷後移,所以進行p = q,

4.最後跳出迴圈,尾插法的要,尾節點置空ra->next = null;

c**實現:

void

split1

(linklist *hc ,linklist *

&ha,linklist *

&hb)

ra->next = null;

//尾插法,這裡尾節點要置空。

}

單鏈表的鍊錶拆分

1.定義三的指標變數 p q t,p 指向原鍊錶的頭結點 head1 新建另乙個頭結點 head2,q 指向head2,t 指向head1 的next 結點,兩個頭結點的 next 都設為空。2.按照條件分配t 指向的結點,如果將這個結點連線到 head1 的鍊錶中,1 讓p的 next 指向t 2...

鍊錶 單鏈表的拆分

資料結構實驗之鍊表五 單鏈表的拆分 time limit 1000 ms memory limit 65536 kib problem description 輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相...

將單鏈表拆分為兩個特定的單鏈表

題目要求 有乙個帶頭結點的單鏈表l 設計乙個演算法將其拆分成 兩個帶頭結點的單鏈表l1和l2,其中l1 l2 思路 l1用尾插法構建,l2用頭插法構建。includeusing namespace std typedef char elemtype 定義單鏈表結構體 struct linklist ...