添加到链表时冻结(C)

添加到链表时冻结(C),c,data-structures,linked-list,C,Data Structures,Linked List,我的代码编译正确,但当我执行时,insertLast被调用两次,然后我的程序冻结。我不明白为什么它会工作两次,但随后就冻结了 将节点发送到我的链接列表的代码: int main () { LinkedList* canQueue=createList(); for(ii = 0; ii < 10; ii++) { TinCan* tempCan = (TinCan*) malloc(sizeof(TinCan));

我的代码编译正确,但当我执行时,insertLast被调用两次,然后我的程序冻结。我不明白为什么它会工作两次,但随后就冻结了

将节点发送到我的链接列表的代码:

int main ()
    {
    LinkedList* canQueue=createList();

    for(ii = 0; ii < 10; ii++)
        {
        TinCan* tempCan = (TinCan*) malloc(sizeof(TinCan));
        insertLast(canQueue, tempCan);
        }

    return 0;
    }

看起来您正在将第一个节点设置为它自己的邻居。请注意,您使用的是指针,它们不一定复制基础对象

    list->head = newNode;
    newNode->next=NULL;
    current = list->head;
    current->next = newNode;

开始时,您将头作为新节点,然后是当前头(当前=新节点),然后是当前。下一步=新节点(新节点。下一步=新节点)。因为您处于while循环中,所以您将永远循环这一节点,直到退出程序。

看起来您正在将第一个节点设置为它自己的邻居。请注意,您使用的是指针,它们不一定复制基础对象

    list->head = newNode;
    newNode->next=NULL;
    current = list->head;
    current->next = newNode;

开始时,您将头作为新节点,然后是当前头(当前=新节点),然后是当前。下一步=新节点(新节点。下一步=新节点)。因为你在一个while循环中,你将永远在这个节点上循环,直到你退出程序。

有一些奇怪的事情,你没有在main中声明
ii
,你在
insertLast
中有一个本地
ii
,似乎什么都没有做。有一些奇怪的事情,您没有在main中声明
ii
,并且在
insertLast
中有一个本地
ii
,它似乎没有做任何事情。谢谢我现在看到问题了谢谢我现在看到问题了