c++鏈表 怎樣將順序表和鏈表合并成一個有序表?
怎樣將順序表和鏈表合并成一個有序表?這個問題最麻煩之處在于內(nèi)存的分配。你用C還是C ?C 的話,單鏈表用list結(jié)構(gòu),順序表用vector結(jié)構(gòu),假設二者分別為list<int> a和vec
怎樣將順序表和鏈表合并成一個有序表?
這個問題最麻煩之處在于內(nèi)存的分配。你用C還是C ?
C 的話,單鏈表用list結(jié)構(gòu),順序表用vector結(jié)構(gòu),假設二者分別為list<int> a和vector<int> b。后面就容易了,
while (!a.empty())
{
b.push_back(a.front())
a.pop_front()
}
順序表的內(nèi)存分配問題STL會自行解決的。
如果是C就有點辛苦了,比較直觀的做法是先把鏈表從頭到尾走一遍,算出它的長度,然后分配一個空間,其長度等于單鏈表和順序表長度之和,再把兩個表的內(nèi)容拷進去。稍微優(yōu)化一點的做法是先猜測一個適當?shù)逆湵淼拈L度,然后以此來分配內(nèi)存;如果后來發(fā)現(xiàn)鏈表過長,那么把猜測的長度加倍,重新分配內(nèi)存。