我是C新手,並嘗試學習如何在鏈接列表上實現C.我很困惑爲什麼我不能在主函數中訪問myList?因爲當我嘗試myList->data
時,這是分段錯誤。我認爲我的addtohead函數有一些錯誤? 下面是我的代碼:使用C鏈接列表中的分段錯誤使用C
#include <stdio.h>
#include <stdlib.h>
typedef struct NODE{
int data;
struct NODE *next;
}node;
node * myList;
node * addToHead(node*, int);
void printList();
int main(){
myList = NULL;
int input;
while (scanf("%i",&input) == 1){
addToHead(myList, input);
printf("%d \n", myList->data);
}
printf("My List:\n");
printList(myList);
return 0;
}
node* addToHead(node* head, int newData){
node *temp = (node *)malloc(sizeof(node));
temp -> data = newData;
temp -> next = NULL;
if(head != NULL){
temp -> next = head;
}
head = temp;
return head;
}
void printList(node* head){
node *temp = head;
while(temp != NULL){
printf("%d ", temp->data);
temp = temp -> next;
}
printf("\n");
}
你沒有做什麼用函數的返回值。參數'head'是main中的一個副本*。試試'myList = addToHead(myList,input);'。 –
將'head'變成'addToHead'具有本地範圍。 – LPs