4

私は数年ぶりにプログラミングを再学習する過程にあり、現在は C# と Lua の両方に集中しています。私が Lua で使用している本には Linked List の例がありますが、それがどのように機能しているかを正確に理解するのに苦労しています。

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

私がこれを正しく読んでいるなら

  • 新しいテーブルを作成しています
  • リストをそのテーブルに割り当て、「次の」キー/識別子(正しい用語?)をリストを指すように設定します(最初に作成されたテーブルの時点ではまだnilです)
  • 次に、「値」キー/識別子を読み取ったものに設定します
  • 次に、「リスト」は実際に新しく作成されたテーブルを指しています

次に、ループの次の実行で

  • 次のテーブルの作成
  • リストを指すように「次の」キー/識別子を設定します(現在、以前に作成されたテーブルを指しています)
  • 次に、「値」キー/識別子を読み取ったものに設定します
  • 次に、「リスト」は実際に新しく作成されたテーブルを指しています...再び

リストがテーブルを作成しようとしていて、行の実行が完了する直前に現在指しているものを指しているのは少し奇妙/奇妙に思えたので、これがどのように機能しているかを正確に理解していることを確認したかっただけです。作成された最新のテーブルを指すように更新されました。

それとも私はここから離れていますか?

4

2 に答える 2

4

など) の LIFO リンク リストと似ています。はい、あなたはそれを正しくフォローしていました。

私の入力が次のとおりであるとします:(同じ順序で)

  • 21
  • やあ
  • 35
  • いいえ

次に、 mylistは次のように作成されます。

list = {
    value = "No",
    next = {
        value = 35,
        next = {
            value = "Hi",
            next = {
                value = 21
                next = nil
            }
        }
    }
}
于 2013-03-29T18:19:22.300 に答える