0

print ステートメントが null を返すのはなぜですか?

#include <stdio.h>>
#include <stdlib.h>

struct Node
{
    char abbreviation;
    double number;
    struct Node *next;
};

void insert(char abbreviation, double number, struct Node *head) {
    struct Node *current = head;
    while(current->next != NULL)
    {
        current = current->next;
    }

    struct Node *ptr = (struct Node*)malloc(sizeof(struct Node));
    ptr->abbreviation = abbreviation;
    ptr->number = number;
    current->next = ptr;

    return;
}

int main(int argc, char* argv[]) {
    struct Node *head = (struct Node*)malloc(sizeof(struct Node));
    insert('n',456,head);
    printf("%s\n", head->abbreviation);
}
4

5 に答える 5

3

head->next が指すノードを作成し、そこに値を挿入します。ヘッド ノード自体に値を設定することはありません。

于 2013-03-21T04:03:17.377 に答える
2

abbreviation文字列ではなく文字です。あなたがしたいprintf("%c\n", head->abbreviation);

于 2013-03-21T03:58:36.147 に答える
0

このコードを試してください。

#include <stdio.h>>
#include <stdlib.h>
struct Node
{
    char abbreviation;
    double number;
    struct Node *next;
};
void insert(char abbreviation, double number, struct Node *head) {
struct Node *current = head;
while(current->next != NULL)
{
    current = current->next;
}

struct Node *ptr = (struct Node*)malloc(sizeof(struct Node));
ptr->abbreviation = abbreviation;
ptr->number = number;
if(head->next==NULL)
{
    head=current=ptr;
}
else
{
    current->next = ptr;
}
return;
}

int main(int argc, char* argv[]) 
{
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
insert('n',456,head);
printf("%s\n", head->abbreviation);
}
于 2013-03-21T04:49:14.670 に答える
0

UncleO の answerに追加するには、 を呼び出す前にinsert()、とを目的の値に設定し、NULL に初期化main()します。head->abbreviationhead->numberhead->next

于 2013-03-21T04:46:40.207 に答える