我的算法書有一個用不同方法在 Python 上實現鏈表的方法。這是remove方法,但我不完全理解while循環。這個實現依賴于Node之前定義的一個類,該類具有 、 、 等方法。get.data()列表get.next()本身set_next()是一個名為 的類UnorderedList。self.head指列表中的第一項。此方法的思想remove是遍歷列表,直到找到要刪除的項目。我們創建 acurrent和 aprevious來跟蹤我們正在查看的當前項目和之前的項目。我的問題與 while 循環有關。我們設置的found目的False是當我們找到我們正在尋找的項目時更改它。但是,當我們說 時,while 循環不會改變foundto的值嗎?Truenot found我知道這是一個簡單的問題,但我很難理解這個 while 循環為什么以及如何工作,因為在我的腦海中not通常使布爾值在其范圍內與它的實際情況相反。有人可以向我解釋一下嗎?順便說一句,我不需要對當前代碼進行任何解釋或改進,這是書中的一個示例,這對我來說都很有意義,我只是想理解那部分。def remove(self, item): current = self.head previous = None found = False while not found: if current.get_data() == item: found = True else: previous = current current = current.get_next() if previous == None: self.head = current.get_next() else: previous.set_next(current.get_next())
2 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
所以看來我錯過了 while 循環試圖做的事情的一部分。事實上,saynot found
意味著表達式的計算結果為True
,但在這種情況下,這不會停止循環。它完全按照我們想要的方式執行,它繼續運行循環。一旦找到我們正在尋找的項目,我們就將 的值更改found
為True
。那時,當我們評估它時,while not found
它將產生False
,這將使我們脫離循環。

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
not found
用作 while 循環中的條件,而不是用作更改值的語句。您可以閱讀while not found
為while found == False
添加回答
舉報
0/150
提交
取消