gpt4 book ai didi

c - 使用列表内存 - 家庭作业

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:59 27 4
gpt4 key购买 nike

所以基本上我在这个作业中遇到问题 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 的方式对其进行编码......任何建议都会有所帮助:)

最佳答案

本质上,您要通过使用辅助列表作为堆栈来模拟递归解决方案,并且您有这个想法。但为了更有效率,试试这个。首先用一个简单的 while-not-empty 循环制作第一个列表的反向副本。然后继续使用第二个列表扩展反向副本,再次使用简单的 while-not-empty 循环。现在你有两个列表的反向副本附加在一起:(反向第二)||(反向第一);使用另一个 while-not-empty 循环制作一个反向的(即正确的顺序)副本。您应该能够在没有任何“if”测试的情况下执行此操作——while 循环应该正确处理空列表极端情况。

另外,不要删除参数——那是自找麻烦。但是当然要删除前两个循环制作并由第三个循环使用的反向副本;它本质上是递归版本的堆栈。

关于c - 使用列表内存 - 家庭作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9136269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com