我的问题是,当我尝试第一次添加一个节点到我单向链表时,一切都预计,但是当我想添加另一个节点,我的程序崩溃。似乎我的错误是由于尝试写入0地址而导致的。但是我似乎无法找到我的代码中的错误。我用malloc吧? 下面是代码:单个链接列表错误,同时添加节点
typedef struct linkedList
{
int StudentId;
char name[100];
char dep[100];
struct linkedList *next;
} LinkedList;
LinkedList *head = NULL;
LinkedList *current = NULL;
LinkedList *createList(int val, char name[], char dep[])
{
LinkedList *ptr = (LinkedList *)malloc(sizeof(LinkedList));
if (ptr == NULL)
{
printf("Node Creation Failed\n");
return NULL;
}
ptr ->StudentId = val;
strcpy(ptr -> name, name);
strcpy(ptr ->dep, dep);
ptr ->next = NULL;
head = current = ptr;
return ptr;
}
LinkedList *addToList (int val, char name[], char dep[])
{
if (head == NULL)
{
return (createList(val, name, dep));
}
else
{
LinkedList *ptr = (LinkedList *)malloc(sizeof(LinkedList));
if (ptr = NULL)
{
printf("Node Creation Failed\n");
return NULL;
}
ptr -> StudentId = val;
strcpy(ptr ->name, name);
strcpy(ptr ->dep, dep);
ptr -> next = NULL;
current -> next = ptr;
current = ptr;
return ptr;
}
}
在主功能: AddtoList(10, “ABC”, “ABC”); 调用createList,没问题,但 如果我再次使用AddtoList,程序崩溃,createList和AddtoList真的很相似,无法找出问题所在。
您是否使用调试器调试了您的代码,在遍历相关变量的同时遍历每一行?我对此表示怀疑。 -1 – alk