如何用遞迴倒置乙個棧?如何僅用遞迴函式和棧操作逆序乙個棧

2025-02-06 20:10:13 字數 1051 閱讀 6524

1樓:燈燈的小暖手

如果遞迴函式只能在堆疊上傳遞元素,而不是通過堆疊本身傳遞指標,我們假定應用於函式引數+函式的空間之和不超過k元素。然後函式的每個呼叫相加為o(k,2)逆對的最大值,最終結果需要乙個o(n - 2)逆對。所以最小複雜度是o(n?

2).當然,有一點點的元素是可複製的證據。但我不認為複製是沒有意義的,因為我們只考慮堆疊結尾處棧中元素的位置。

我認為在堆疊上構建連結串列是可能的,其原理如下:堆疊為s=。然後每次遞迴,都可以彈出乙個(順序為54321),而每個遞迴結構都列出了頭- >5 - 4 - 3 - 2 - 1,然後s是空的,你可以直接從頭部把所有的值推回來。

題目願意是不要用遞迴堆疊空間作為程式使用的空間,否則沒有解決方案,應該是很明顯的嗎?見「程式設計師選擇100個問題(39)-反向線[資料結構]。巧妙的方法是使用遞迴堆疊空間從原始堆疊彈出中儲存元素,並避免額外的o(n)陣列。

解的時間複雜度為o(n·2)。

倒置堆疊:1。頂部= pop()2。倒堆。將頂部插入堆疊的下部,如何將它插入堆疊的底部?這是另一種遞迴嗎?

覺得這個問題大腦崩潰了,我的文化水平是不夠的,答不出來,你要不要另請高明的好?

如何僅用遞迴函式和棧操作逆序乙個棧

2樓:匿名使用者

import ;

題目:用遞迴顛倒乙個棧。例如輸入棧,1在棧頂。顛倒之後的棧為,5處在棧頂。

// 我們再來考慮怎麼遞迴。我們把棧看成由兩部分組成:棧頂元素1和剩下的部分。如果我們能。

把顛倒過來,變成,然後在把原來的棧頂元素1放到底部,那麼就整個棧就顛倒過來了,變成。

接下來我們需要考慮兩件事情:一是如何把顛倒過來變成。我們只要把看成由兩部分。

組成:棧頂元素2和剩下的部分。我們只要把先顛倒過來變成,然後再把之前的棧頂元素2放到最。

底部,也就變成了。

至於怎麼把顛倒過來……很多讀者可能都想到這就是遞迴。也就是每一次試圖顛倒乙個棧的時候,現在棧頂元素pop出來,/ 再顛倒剩下的元素組成的棧,最後把之前的棧頂元素放到剩下元素組成的棧的底部。遞迴結束的條件是剩下的棧已經空了//

如何用vb做地鐵查詢系統,如何用vb做乙個地鐵查詢系統

地鐵票價查詢系統 這個沒意義吧 按公里收費的,還是按站台收費的。這個只需要計算就ok了 你以前做過乙個地鐵線路查詢系統,是使用最短路徑演算法做的。如何用vb做乙個深圳地鐵資訊查詢系統?思路?難點?哥們 這系統有點複雜啊 你得先建立幾個大型的資料庫 然後才能用vb來查詢啊,其實用vb實現查詢和修改很簡...

如何用巫術害人,如何用巫術害乙個人

你知道嗎,不管用什麼方法害人,最後都會害到自己,千萬別再打這個妄想啦。因為大家都是一體的,萬法同出一心,不管你是否相信。心術不正,當心遭天譴。害人害己,都會業報牽連,生死苦海輪迴迴圈不斷。孩紙,醒醒吧,別睡了 如何用巫術害乙個人 用紅色芭蕉葉畫上人形,寫上姓名,經過詛咒禱告,完畢後吧芭蕉葉埋進牛糞裡...

如何用漢字代表我愛你,如何用乙個漢字代表我愛你?

想。相互的放在心上。您因為 心 上有 你 便是愛 傾 為他傾心,為他傾其所有 怎樣用乙個字來表示我喜歡你 那個字就是 愛。我愛你 怎麼寫成乙個字?1 把愛字上面一 du橫寫直點 2 愛的三點zhi換成dao love 3 愛中的 友 換成 you 我愛你內的多種說法 1 英 語 i love you...