看起來我的列表的第一個節點中存在垃圾數據。爲什麼會這樣?爲什麼我的鏈接列表的第一個節點中存在垃圾數據?
這些是我使用的結構的定義。
typedef struct node {
char *x;
struct node *next;
}node;
typedef struct {
struct node *head;
}list;
// create_list()函數:
list* create_list(){
list *myList = malloc(sizeof(myList));
myList->head = NULL;
if (myList->head != NULL){
return NULL;
}
return myList;
}
這裏是ADD_TO_LIST函數的實現
int add_to_list(list* ll, char* item){
node *current = ll->head;
node *new_node = malloc(sizeof(node));
if (!new_node){
fprintf(stderr, "error allocating mem.\n");
return 1;
}
strcpy(new_node->x, item);
new_node->next = NULL;
if(ll->head == NULL){
ll->head = new_node;
return 0;
}else{
while(current->next){
current = current->next;
}
current->next = new_node;
}
return 0;
}
這是print_list();這裏funcntion
void print_list(list *ll){
node *current = ll->head;
while(current){
printf("%s\t\n",current->x);
current = current->next;
}
}
當我打電話main.c中函數的是我怎麼做的吧:
list *newList = create_list();
char test_var = 'k';
add_to_list(newList, &test_var);
printf("printing whole list : \n");
print_list(newList);
歡迎堆棧溢出。請儘快閱讀[關於]和[問]頁面。更迫切的是,我們要睡覺看MCVE中的調用代碼([MCVE])。我們無法從這段代碼中發現哪裏出了問題。 –
您不會顯示節點結構中的「x」元素是數組還是指針。如果它是一個數組,你會溢出嗎?如果它是一個指針,則在複製之前不會分配任何空間。 –
爲了更加清晰,我更新了我的問題。請你再看一遍? –