ใครใจดีช่วยอธิบาการทำงานของโค๊ดนี้ให้หน่อยครับ ผมงงมากๆเลยกับวิธีการทำงานของมันมีลำดับวิธีการยังไง? ตรงที่
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;
}
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;
}