題目要求:有乙個帶頭結點的單鏈表l=,設計乙個演算法將其拆分成
兩個帶頭結點的單鏈表l1和l2,其中l1=,l2=。
思路:l1用尾插法構建,l2用頭插法構建。
#includeusing namespace std;
typedef char elemtype;
//定義單鏈表結構體
struct linklist
;//頭插法建立單鏈表
void createlistf(linklist* &l, elemtype a, const int n)
}//尾插法建立單鏈表
void createlistr(linklist* &l, elemtype a, const int n)
}//輸出單鏈表
void displaylist(linklist* l)
cout << endl;
}void main()
; createlistr(l, a, n);//構建原始單鏈表
cout << "原始";
displaylist(l);
//掃瞄原始單鏈表,得到用於構建l1,l2的陣列
elemtype a1[n / 2], a2[n / 2];
linklist* p = l->next;
int k = 0;
while (p != null)
else
++k;
p = p->next;
} //構建l1,l2
createlistr(l1, a1, n / 2);
createlistf(l2, a2, n / 2);
//輸出拆分後的單鏈表l1,l2
cout << "l1";
displaylist(l1);
cout << "l2";
displaylist(l2);
}
將單鏈表L拆分成兩個帶頭結點的單鏈表L1和L2
有乙個帶頭結點的單鏈表l 設計乙個演算法將其拆分成兩個帶頭結點的單鏈表l1和l2,其中l1 l2 要求l1使用l的頭結點。利用原單鏈表l中的所有結點通過改變指標域重組成兩個單鏈表l1,l2.其中l1的相對順序與l相同,所以採用頭插法建立單鏈表l1.l2的相對順序與l相反,所以採用尾插法。includ...
將兩個單鏈表合併成乙個有序單鏈表
3.10 4.將兩個單鏈表合併成乙個有序單鏈表 由於以前初學c 時所寫的 不堪入目,不符合規範性,完整性和魯棒性,於是今日重寫其核心演算法以警示自己。node merge node p1head,node p2head else return pmergedhead 思路 因為鍊錶可以由結點輕鬆構造...
單鏈表操作之合併兩個單鏈表
本篇部落格為合併兩個單鏈表,有序和無序都可以 其中用到單鏈表的尾插和單鏈表的選擇排序 中大部分操作都在單鏈表基本操作詳解中介紹過,這裡就直接上 include include includetypedef int datatype typedef struct linknode linknode,p...