在直流中,如何彈出並丟棄堆棧頂部的數字?包含三個項目(1 2 3
)的堆棧應該成爲具有兩個項目(2 3
)的堆棧。目前我正在將數字推到另一個堆棧(Sz)上,但這似乎相當跛腳。dc:我如何彈出(並丟棄)堆棧的頂部號碼?
回答
有許多方法刪除堆棧的頂部,但他們有副作用。刪除沒有副作用的元素需要避免包含副作用。
要除去沒有副作用的堆棧頂部,請確保頂部是一個數字,然後運行d!=z
。如果堆棧有[5],則執行以下操作:
- 從項目開始刪除。
Stack: [5]
- 重複堆棧頂部。
Stack: [5,5]
- 流行頂部2和測試,如果它們不相等:
5 != 5
Stack: []
- 如果測試通過(它不能),運行
z
Stack: []
爲了確保堆的頂部是一個數字,我使用Z
這將計算一個字符串的長度或數字中的位數並推回。還有其他選項,比如X.任何能夠使任何數字出現的東西都可以工作,以便與!=兼容。
所以,在所有的情況下複製粘貼完整的答案是:
Zd!=r
我通常在(爲下降)寄存器d堅持這一點:
[Zd!=r]sD
,然後我可以運行
lDx
[...答案被刪除,對方的回答是更好的...]
這可能是我所見過的最令人滿意的答案。謝謝!! –
這是一個有趣的解決方案,但它似乎比爲OP預留一個寄存器更加神祕。我唯一的修改是使用's'而不是'S',因爲前者會覆蓋寄存器的任何現有值,所以如果很多事情都被轉儲到寄存器中,則不會浪費存儲器。 – nyuszika7h
@ nyuszika7h:該問題詢問如何在不使用寄存器的情況下丟棄堆棧的頂部。 –
- 1. 未能彈出堆棧頂部
- 2. iOS:非彈跳式的棧頂堆棧頂部固定元素堆棧查看
- 3. 使用堆棧的類似Tetris的Applet - 彈出頂部
- 4. 頂部堆棧tbody
- 5. Android的堆棧管理,並把頂部
- 6. 頂部僞元素的堆棧頂部
- 7. 檢測鍵盤上的GO鍵,並彈出到導航堆棧頂部
- 8. 在堆棧彈出
- 9. 從堆棧中彈出頂部2個值,添加並將它們推回
- 10. 如何使用Robotium/Android SDK找出堆棧頂部的Activity?
- 11. 如何同時彈出兩個堆棧
- 12. 如何在IOS中彈出堆棧?
- 13. 如何將活動帶到堆棧頂部並重置它?
- 14. 堆棧的頂部應該在堆棧的鏈表中實現?
- 15. IL無堆棧變量的堆棧項的頂部複製
- 16. 堆棧多個libnotify彈出
- 17. 模擬printf堆棧彈出
- 18. Junit測試堆棧彈出
- 19. 堆棧推彈出旋轉
- 20. Android彈出活動堆棧
- 21. 堆棧彈出不返回
- 22. MS Detours 2.1 - 彈出堆棧
- 23. 非阻塞堆棧彈出
- 24. 如何刪除不在C#中堆棧頂部的堆棧項目
- 25. 如何遞歸交換堆棧的頂部元素到底部
- 26. 如何將頂部div移動到堆棧的底部
- 27. 如何堆棧頂部的div至底部CSS
- 28. 複製堆棧Java的頂部元素
- 29. 確定堆棧頂部的位置
- 30. 刪除堆棧中的頂部片段
怎麼會有東西在堆棧上,你不想要? – hendrik
@hendrik:如果你有一個計數器用來控制一個循環的迭代次數,那麼當循環結束時,你必須丟棄計數器。 –