创建函数create
个人理解:分为三个步骤(next下一个,head头指针,last上一个)
①q->next:在循环里第一步必须执行,是对链表尾的赋值0处理,
q->next意味着下一个环节
②head的处理:本身就不存在链表,故意引导创建head作为链表头指针
③在p->next=q中,此时p仍是上一次循环的旧的q,而q是通过新的malloc变成新的q。p->next意味着last上一个环节
struct stu* create(struct stu* head, int n) { //创建
int i;
struct stu* p = NULL, * q = head;
for (i = 0; i < n; i++) {
q = (struct stu*)malloc(sizeof(struct stu));
printf("请输入学号,成绩(用逗号隔开):");
scanf_s("%d,%d", &q->number, &q->score);
q->next = NULL;
if (head == 0) {
head = q;
}
else {
p->next = q; //这里的p是上一次循环暂时存储下来的q,或者说是上一个q
}
p = q; //存储q,工具p
}
return head; //返回头指针,用来代指链表
}
查找函数search
个人理解:分为三个步骤(wh