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