3 ms·
Abc is a node in a doubly linked list. I think function foo is supposed to insert a new node (n) into the list before node p, but it's not done properly (while
by 2arrs2ells 15y ago
Abc is a node in a doubly linked list.
I think function foo is supposed to insert a new node (n) into the list before node p, but it's not done properly (while n points to p and p points to n, n does not point back to the item before p).
- ori_b 15y agoI was going for foo as 'dlist_prepend()', not dlist_insert(), but figuring out that it's putting a node into a list is good enough for me. (Edit: to me, 'prepend' implies that there are no nodes before the head of the list you're prepending to) That should be enough for you to figure the last 2 errors, in any case.
- 2arrs2ells 15y agoPrepend is probably a better way of expressing "insert before" :P n->p = p->p I don't see the last one - unless foo should be returning n?
- ori_b 15y agoYes, it should be returning `n`. And the final one I was thinking of was a segfault on an empty list prepend(NULL, &something); would die if you don't do; if (p != NULL) p->p = n; I think, this would be easier in a larger problem where you had context that gave you usage examples. I probably wouldn't ask someone to debug a function floating an a vacuum like I did here. I'd use a trivial but full working program. I don't think I'd expect everyone to get every bug without a little bit of prodding in the right direction. Being able to step through the code and show what it's doing to the data structures would be a first step that would make me happy. Recognizing that the data structure looked like it's a linked list, and finding and and fixing a couple of the bugs, and I'd be very happy.