2013-03-29 42 views
4

幾年後,我正在重新學習編程的過程,目前我正在關注C#和Lua。我爲Lua使用的這本書有一個鏈接列表的例子,但我很難理解它是如何工作的。Lua中的鏈接列表示例如何工作?

list = nil 
for line in io.lines() do 
    list = {next = list, value = line} 
end 

如果我讀這個權利

  • 它創建一個新表
  • 該表分配名單,設置了「下一個」鍵/標識符(正確的術語?)指向該列表(在第一個創建的表格點仍然沒有)
  • 然後將「值」鍵/標識符設置爲
  • 中的任何值,然後「列表」實際上指向新創建的泰德表

然後在下次運行通過循環

  • 創建下一個表
  • 設置的「下一個」鍵/標識符指向列表(其現在指向的先前創建的表)
  • 然後設置「值」鍵/標識符進行任何讀取在
  • ,則「清單」其實現在已經指向新創建的表...再次

我只是想確定我明白這是究竟是如何工作的,因爲它似乎有點古怪/奇怪的是,名單試圖在創建表,指着不管它是當前指向只是該行的執行之前完成,列表更新爲指向最新創建的表格。

還是我在這裏?

回答

4

這有點類似於其他語言的LIFO鏈表(如)。是的,你正確地跟着它。

假設我的輸入是:(按相同的順序)

  • 沒有

然後,創建我的list爲:

list = { 
    value = "No", 
    next = { 
     value = 35, 
     next = { 
      value = "Hi", 
      next = { 
       value = 21 
       next = nil 
      } 
     } 
    } 
} 
+0

非常感謝。我特別爲「下一個」發生的任務感到困惑,因爲它看起來好像只是設置爲自己,但顯然理解執行代碼時執行任務的順序是理解這是工作。我曾預料過某種類似「當前」的「中間人」節點,類似於我在學習C++數據結構時所做的。感謝您幫助我剔除一點生鏽! – WannabeCoder