私のリストの最初のノードに迷惑データがあるようです。これはなぜでしょうか?リンクリストの最初のノードに迷惑データがあるのはなぜですか?
これは私が使用している構造体の定義です。
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);
ようこそ:それ以外の場合は
、のようなものを使用することをお勧め。まもなく、[About]と[Ask]ページをお読みください。もっと緊急に、私たちはMCVE([MCVE])で呼び出しコードを見て寝るつもりです。このコードから何がうまくいかないかはわかりません。 –
ノード構造の 'x'要素が配列かポインタかを表示しません。それが配列の場合、オーバーフローする可能性がありますか?ポインタの場合は、コピーする前にスペースを割り当てないでください。 –
私の質問がより明確になるように更新しました。もう一度見てもらえますか? –