如何在 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 时遇到了一些问题,因为我找不到任何合适的教程来提供帮助。如您所见,我只是想编写一个 LINKED_LIST 程序,在链表中添加数字 [0,10]。不是学校项目。只是在即将到来的课程之前练习。请帮忙!
让我们看一下原始示例中使用的功能的注释:
LIST.put (v: like item)
: 将当前项目替换为 v
。
LIST.start
: 将光标移动到第一个位置。
LIST.forth
: 移动到下一个位置。
新创建的列表是空的。因此,没有可以通过调用 put
来替换的项目。这解释了为什么调试器在功能 put
处停止:违反了功能的前提条件。
查看classLIST
的界面视图,有一个特征子句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
。这种情况下的 idiomatic feature name 是 extend
.
考虑到这一点,原来的循环变成:
from
i := 0
until
i = 11
loop
list.extend (i)
i := i + 1
end
这是我目前的情况。
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 时遇到了一些问题,因为我找不到任何合适的教程来提供帮助。如您所见,我只是想编写一个 LINKED_LIST 程序,在链表中添加数字 [0,10]。不是学校项目。只是在即将到来的课程之前练习。请帮忙!
让我们看一下原始示例中使用的功能的注释:
LIST.put (v: like item)
: 将当前项目替换为v
。LIST.start
: 将光标移动到第一个位置。LIST.forth
: 移动到下一个位置。
新创建的列表是空的。因此,没有可以通过调用 put
来替换的项目。这解释了为什么调试器在功能 put
处停止:违反了功能的前提条件。
查看classLIST
的界面视图,有一个特征子句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
。这种情况下的 idiomatic feature name 是 extend
.
考虑到这一点,原来的循环变成:
from
i := 0
until
i = 11
loop
list.extend (i)
i := i + 1
end