我的問題是,當我嘗試第一次添加一個節點到我單向鏈表時,一切都預計,但是當我想添加另一個節點,我的程序崩潰。似乎我的錯誤是由於嘗試寫入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