折半查找取整規(guī)則 怎樣將順序表和鏈表合并成一個有序表?
怎樣將順序表和鏈表合并成一個有序表?這個問題最麻煩的部分是內(nèi)存分配。如果你用C還是C?C,鏈表結(jié)構(gòu)用于單鏈表,向量結(jié)構(gòu)用于序列表,假設(shè)它們分別是list< int> A和vector< i
怎樣將順序表和鏈表合并成一個有序表?
這個問題最麻煩的部分是內(nèi)存分配。如果你用C還是C?
C,鏈表結(jié)構(gòu)用于單鏈表,向量結(jié)構(gòu)用于序列表,假設(shè)它們分別是list< int> A和vector< int> B。當(dāng)(!A.empty())]{
b.push uu2; back(A.front())
A.pop uu2; STL將自行解決front()]}
order表的內(nèi)存分配問題。
如果是C,就有點(diǎn)難了。更直觀的方法是,首先從頭到尾遍歷鏈表,計算其長度,然后分配一個長度等于單個鏈表和順序鏈表長度之和的空間,并復(fù)制兩個表的內(nèi)容。一個稍微好一點(diǎn)的方法是,先猜測一個合適鏈表的長度,然后用它來分配內(nèi)存;如果發(fā)現(xiàn)鏈表太長,則將猜測的長度加倍,重新分配內(nèi)存。