簡體   English   中英

如何在Eiffel中初始化並填寫鏈接列表?

[英]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程序。 不是學校的項目。 只是在即將開始的課程之前練習。 請幫忙!

讓我們看一下原始示例中使用的功能的注釋:

  1. LIST.put (v: like item) :用v替換當前項。
  2. LIST.start :將光標移到第一位置。
  3. 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替換當前項目。

因為我們正在討論的是將新元素添加到列表末尾的功能,所以只有以下幾種適用: extendforcesequence_put 在這種情況下, 慣用的功能名稱extend

考慮到這一點,原始循環變為:

from
    i := 0
until
    i = 11
loop
    list.extend (i)
    i := i + 1
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM