在子函数中将链表跳的一个节点后,直接返回主函数会发现链表还处于输入子函数的那个节点
void set_box(box *b,space *p,node *d)
{
b->num = b->num - 1;
if (b->num == 0)
{
if (b->next!=NULL) //不是最后一类箱子
{
b->prev->next = b->next;
b->next->prev = b->prev;
b = b->next;
}
}
这是因为传入子函数的是指针,可以将指针指向的值改变,但是不能改变指针本身
可以采用将将节点设为返回值,实现主函数中链表节点的改变。
感谢这篇文章https://www.jianshu.com/p/c9b1f475822b