[英]How do I initialize and fill a linked list in Eiffel?
到目前為止,這就是我所擁有的。
create {LINKED_LIST[INTEGER]} list.make
from
i := 0
list.start
until
i = 11
loop
list.put(i)
i := i + 1
list.forth
end
調試器指向行list.put(i)。 我認為問題在於列表未正確初始化? 我在弄清楚如何使用linked_list時遇到了一個問題,因為找不到合適的教程來提供幫助。 如您所見,我只是試圖編寫一個在鏈接列表中添加數字[0,10]的LINKED_LIST程序。 不是學校的項目。 只是在即將開始的課程之前練習。 請幫忙!
讓我們看一下原始示例中使用的功能的注釋:
LIST.put (v: like item)
:用v
替換當前項。 LIST.start
:將光標移到第一位置。 LIST.forth
:移動到下一個位置。 新創建的列表為空。 因此,沒有可以通過調用put
替換的項目。 這解釋了調試器為何在放置的功能處put
:違反了功能的前提條件。
查看類LIST
的接口視圖,有一個功能子句Element change
具有以下功能:
append (s: SEQUENCE [G])
:追加s
的副本。 extend (v: G)
:添加新出現的v
。 fill (other: CONTAINER [G])
:盡可能多地填充other
項目。 force (v: like item)
:將v
添加到末尾。 put (v: like item)
:用v
替換當前項目。 sequence_put (v: like item)
:在末尾添加v
。 put_i_th (v: like item; i: INTEGER_32)
:將v
置於第i
個位置。 replace (v: G)
:用v
替換當前項目。 因為我們正在討論的是將新元素添加到列表末尾的功能,所以只有以下幾種適用: extend
, force
, sequence_put
。 在這種情況下, 慣用的功能名稱是extend
。
考慮到這一點,原始循環變為:
from
i := 0
until
i = 11
loop
list.extend (i)
i := i + 1
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.