หัดเขียนภาษา C ครับงงเรื่อง Linkedlist

สวัสดีครับผมพึ่งเคยตั้งกระทู้ใน pantip ครั้งแรกไม่รู้ว่าตั้งถูกห้องรึเปล่า
ถ้าผิดขออภัยด้วยครับไม่รู้จะไปตั้งที่ห้องไหน
ตอนนี้ผมเรียนภาษา C อยู่ครับวิชา structure
งงเรื่องโครงสร้าง Linked List มาก
คำถามผมคือ
ถ้าผมประกาศ
typedef struct Node{
    int id;
    char name[30];
    char data[30];    
    float score;
    struct Node *next;
}Data;

ในฟังก์ชั่น main
เงื่อนไข
if(Head == NULL)
       {
       fscanf(inf,"%d %s %f",&am.id,&am.name,&am.score);      
       Head = (Data*)malloc(sizeof(Data));
       Head -> data[cnt] = am.id,am.name,am.score;
       Head -> next = NULL;
       cur = Head;
       }
       else{
            fscanf(inf,"%d %s %f",&am.id,&am.name,&am.score);
            New = (Data*)malloc(sizeof(Data));
            New -> data[cnt] = am.id,am.name,am.score;
            New -> next = NULL;
            cur -> next = New;
            cur = cur -> next;
            }              
สมมุติว่าตอนนี้ผมอ่านข้อมูลจาก text file ลงใน array  ชื่อ data[cnt] ถูกต้องมั้ยครับ
แล้วถ้าเราจะปริ้นข้อมูลจาก data[cnt] ใน linkedlist นี้จะเขียนยังไง
       while(cur!=NULL)
       {
         printf("%s\n",cur -> data[cnt]);
         cnt++;
         cur=cur->next;
       }
แบบนี้ถูกรึเปล่า
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
ลองดูครับ


struct node
{
    int id;
    char name[30];
    float score;
    struct node *next;
};

struct node *head = NULL;
struct node *curr = NULL;

if(head == NULL)
{
    fscanf(...);
    struct node *ptr = (struct node*)malloc(sizeof(struct node));
    if(NULL == ptr)
    {
        printf("Node creation failed");
        return NULL;
    }
    
    ptr->id = am.id;
    ptr->score = am.score;
    strcpy(ptr->name, am.name);
    ptr->next = NULL;
    
    head = ptr;
    curr = ptr;
}
else
{
    fscanf(...);
    struct node *ptr = (struct nade*)malloc(sizeof(struct node));
    ...
    ptr->next = NULL;
    
    curr->next = ptr;
    curr = ptr;
}

curr = head;
while(curr != NULL)
{
    printf("%d %s %f", curr->id, curr->name, curr->score);
    curr = curr->next;
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่