2014-02-12 181 views
0

我瞭解如何與循環S1和S2(在僞代碼)做到這一點連接兩個堆棧(在另一個上面一個堆棧)

Loop (NOT emptyStack(S2)) 
    pop(S2, dataptr) 
    push (temp, dataptr) 
end loop 
Loop (NOT emptyStack(temp)) 
    pop (temp dataptr) 
    push(S1, dataptr) 
end loop 

你怎麼會做這個沒有環(大O字常數) ? 有了隊列,很容易,因爲您只需將q1的後指針移動到q2的前面並將它們鏈接起來即可。

像僞代碼會很棒!非常感謝你。

+2

僞代碼? 'concat_stacks(&s1,&s2)' –

+0

@KerrekSB你是什麼意思? – user3211189

回答

2

在內部實現堆棧作爲鏈接列表並掛在指向堆棧頂部和底部元素的指針上。然後,連接堆棧的操作與將兩個鏈接列表拼接在一起的操作相同,即O(1)。