linked list ภาษา C

ใครใจดีช่วยอธิบาการทำงานของโค๊ดนี้ให้หน่อยครับ ผมงงมากๆเลยกับวิธีการทำงานของมันมีลำดับวิธีการยังไง? ตรงที่

newStu->next = NULL;
cur = newStu;
head = newStu;

ในฟังก์ชั่น addFirst กับ

newStu->next = NULL;
cur->next = newStu;
cur = newStu;

ในฟังชั่น addNextStu คือมันชี้ไปตรงไหนแบบไหนอะไรยังไง ถ้าเขียนอธิบายเป็นแบบแผนภาพจะดีมากๆเลยครับ ขอบคุณล่วงหน้าครับ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct st{
    int id;
    char fname[20];
    int score;    char lname[20];
    struct st *next;
}StudentNode;

StudentNode *head = NULL;
StudentNode *cur = NULL;

void addFirst(int vid,char vfname[20],char vlname[20],int vscore){
    StudentNode *newStu;
    newStu = (StudentNode *)malloc(sizeof(StudentNode));
    newStu->id = vid;
    strcpy(newStu->fname,vfname);
    strcpy(newStu->lname,vlname);
    newStu->score = vscore;

    newStu->next = NULL;
    cur = newStu;
    head = newStu;
}

void addNextStu(int vid,char vfname[20],char vlname[20],int vscore){
    StudentNode *newStu;
    newStu = (StudentNode *)malloc(sizeof(StudentNode));

    newStu->id = vid;
    strcpy(newStu->fname,vfname);
    strcpy(newStu->lname,vlname);
    newStu->score = vscore;

    newStu->next = NULL;
    cur->next = newStu;
    cur = newStu;
}
void listStu(){
    StudentNode *Ptr;
    Ptr = head;
    if(Ptr == NULL){
        printf("No data!!\n");
        exit(-1);
    };

    while(Ptr != NULL){
        printf("%d %s %s %d\n",Ptr->id
                              ,Ptr->fname
                              ,Ptr->lname
                              ,Ptr->score);
        Ptr = Ptr->next;
    }
}

int main()
{
    addFirst(63301,"aka","pij",90);
    addNextStu(63302,"SSSS","DDD",80);
    addNextStu(63302,"SdffsfSSS","DDDss",80);
    listStu();

    return 0;
}
แสดงความคิดเห็น
Preview
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่