我正在尝试制作一个链接列表.所以,我宣布了一个LL数据结构如下:
typedef struct linkedList
{
char* word;
struct linkedList* next;
} linkedList;
Run Code Online (Sandbox Code Playgroud)
现在,我声明了一个表示LL的头部的全局变量 linkedList* head = NULL;
现在,我很惊讶,即使我为指针分配了一个NULL值,我也可以进入下面的while循环.
linkedList* node = head;
while(node != NULL);
{
//Why I am here when I have not yet malloc'ed head and through global variable initialization my head is NULL
}
Run Code Online (Sandbox Code Playgroud)
因此,我觉得我无法检查我的链表head是否已初始化或分配了一些内存.我无法检查,node->next因为它会导致分段错误错误并且node == NULL正在通过!
请注意:
head是已初始化还是已分配了一些内存.我想使用我的链表数据结构来做到这一点.这是因为假设我运送我的数据结构,并希望如果有人试图删除某些内容并且链接列表然后为空,那么应该打印/抛出一些含义完全错误.请问任何想法.
这是因为:
while(node != NULL);
Run Code Online (Sandbox Code Playgroud)
删除分号;.否则,在编译时,它不知道之间的块{...}是在while之后,并且将输入它,而不管中的验证while (...).