C 向链表中添加数据的函数有时会进入无限循环
首先,这是我的代码,这是我的链表C 向链表中添加数据的函数有时会进入无限循环,c,c89,ansi-c,C,C89,Ansi C,首先,这是我的代码,这是我的链表 typedef struct data { struct data *next; int value : 24; }dataTable; 这是我的职责: void addData (int data){ dataTable *dataPointer = NULL; if (dataTableHead == NULL){ /**create the hea
typedef struct data
{
struct data *next;
int value : 24;
}dataTable;
这是我的职责:
void addData (int data){
dataTable *dataPointer = NULL;
if (dataTableHead == NULL){ /**create the head of the list if it doesn't exist*/
dataTableHead = (dataTable *)malloc(sizeof(dataTable));
dataPointer = dataTableHead;
}
else{/**if a data table exist (head exists)*/
dataPointer = dataTableHead;
while (dataPointer->next != NULL){/**gets the last link of the list*/
dataPointer = dataPointer->next;
}
dataPointer->next = (dataTable *)malloc(sizeof(dataTable));/**add a new symbol to the list*/
dataPointer = dataPointer->next;
}
dataPointer->value = data;
}
所以我在其他的.c文件中,加载文本文件的函数,我读取它们的行,每当我看到一些特定的东西,我就把它放在链表中
无论我对1个文件做了什么(或者至少对我尝试的内容),它都能完美地工作,但是每当我尝试2个特定文件时,第2个文件在else语句中的同时在这个函数中得到一个无限循环
我知道我没有发送我所有的代码,但我的问题只是重新获得这个函数,因为我花了很长时间试图弄清楚它,我不明白它怎么会产生无限循环。因为,datapointer将始终是列表的头,这是我用来在链表中存储数据的唯一函数,就我所见,它不会创建任何无限循环的指针。
我做错了什么会导致这个函数无限循环
是的,我使用通过
malloc
分配的缓冲区值确认了100%的循环来自addData函数,未初始化调用了未定义的行为。
您应该初始化dataPointer->next
}
dataPointer->next = NULL; /* add this line */
dataPointer->value = data;
}
注: