1. ## Memory in lists

So basically I'm struggling with question 5 in this assignment,http://www.student.cs.uwaterloo.ca/~...ssignments/a5/We are basically given functions that act like Scheme list functions and in question 5 I am supposed to create a function called iappend, which appends two lists. This is my code and it seems to work.
Code:
```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;
}```
but they want this code to be more efficient, can somewone help me code, so i won't make a temporary list ? I need to code it in such a way that i won't use idelete .... any suggestions would help , Thanks !

2. Find the end of the first list, and the start of the second list. Make the last node in the first list point to the first node in the second list. Done.

Quzah.

3. Use exactly the same algorithm you'd use with a string of beads or popcorn, at your kitchen table. Simple is fast.

4. Sorry, im new with pointer's, how exactly would i find the end of the first list and point it to the second? also im suppose to "build-a-newlist" so i need to somehow put the inputs in a variable such as my acc