【发布时间】:2012-02-03 22:16:54
【问题描述】:
所以基本上我在这个作业中遇到问题 5,http://www.student.cs.uwaterloo.ca/~cs136/assignments/a5/
我们基本上得到了类似于 Scheme 列表函数的函数,在问题 5 中,我应该创建一个名为 iappend 的函数,它附加两个列表。这是我的代码,它似乎可以工作。
ilist iappend(ilist il1, ilist il2) {
ilist acc = iempty();
ilist acc1 = iempty();
ilist a;
while (!iempty_huh(il1)) {
acc1 = icons(ifirst(il1), acc1);
il1 = irest(il1);
}
while (!iempty_huh(il2)) {
acc1 = icons(ifirst(il2), acc1);
il2 = irest(il2);
}
a = acc1;
while (!iempty_huh(acc1)) {
acc = icons(ifirst(acc1), acc);
acc1 = irest(acc1);
}
idelete(a);
return acc;
}
新问题,有人可以帮我写代码,所以我不会做一个临时列表吗?我需要以不使用 idelete 的方式对其进行编码....任何建议都会有所帮助:)
【问题讨论】:
-
我认为它仍然是 O(n),但它当然可以做得更快 O(n)。您正在对列表进行固定次数的传递,并且您需要至少对至少 ONE 列表进行一次传递。
-
我不知道我明白什么,“至少 ONE 超过至少一个列表”是什么意思?