首页 > 解决方案 > 循环在单链表节点创建中无限执行

问题描述

struct SinglyLinkedListNode{
    int data; 
    SinglyLinkedListNode* next = NULL;
};

SinglyLinkedListNode* init(int data){
    SinglyLinkedListNode *newNode =  (SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode));
    newNode -> data = data;
    
**Line 1**
    newNode -> next = NULL;
    return newNode;
}

如果我没有指定nextnew NodeasNULL那么我的循环将无限运行。为什么呢?

创建新时不会next自动设置为:NULLNode

SinglyLinkedListNode *newNode = init(5);

标签: c++linked-list

解决方案


分配的内存malloc()没有初始化。如果你不初始化newNode->next字段,它的值将是不确定的,这会给你的链表带来问题。


推荐阅读