第二十一次课课后作业

首先很感谢同学对我的信任,学习其中的内容,再次如果有错的欢迎大家指出;

下面请听我扯淡.....

头文件包包含2个#include

                              #include

#Include为了后面malloc()函数的使用

熊耀华的图片已经创建好结构体和主函数,所以我们照搬过来,一方面我也懒;

typedef struct STUDENT{
int number;
char name[20];

        float c;
struct STUDENT *next;
}stu;

int main(){
stu *head;
head = (stu*)malloc(sizeof(stu));
head->next = NULL;
createlList(head);
printf("------------------------\n");
output(head);
deleteStudentInfo(head);
output(head);
updateStudentInfo(head);
output(head);
return 0;
}

第一个问题,链表的创建;

首先分定义两个指针,q指针和p指针;

q指针指向头(head)指针;

然后给指针p创建分配动态内存;

因为动态内存分配给的p,所以赋值用p->;

然后把p指针的地址给q指针的储存下一个结点的地址的位置;

然后q指针指向p指针,q指针移动;

然后q指针的储存下一个结点的位置为NULL;

如果想再创建结点,可以重复上面的步骤或者用for循环


上面的学习愉快吗,我相信你们已经愉快的看懂了,并且想学习下一步了,别急;

第二个问题输出链表;

首先定义一个q指针;

然后for循环,三个条件,q指针指向头(head)结点的储存下一节点地址的位置;q指针指向的结点的储存下一节点地址不为空;q指针指向下一结点的储存下一结点地址的位置并且赋值给q指针;

然后for循环中用printf()函数输出;


第二个问题也被你解决的了是不是觉得自己很厉害,想要自己更厉害吗,学第三个问题;

第三个问题删除链表;

首先定义q指针和p指针;

然后q指针指向头指针(head);

然后因为题目要求按照学号删除,所以定义一个整形变量,输入你准备删除的学号;

然后用while循环当p指针不为空,执行下面;

如果p指针指向的学号等于准备删除的学号,那么跳出while循环,否者p指针指向的指向下一地址的位置赋值给p,q指针指向的指向下一地址的位置赋值给q;

然后在while循环外用if语句;

如果p指针不为空,p指针指向的指向下一地址的位置赋值给q指针指向的指向下一地址的位置(这句话难理解,我直接给代码 q->next = p->next);

然后用free()函数释放q;

否者为没找到;


第三个问题有点复杂,然后可以多看几遍,休息休息,毕竟爱因斯坦也睡觉;


第四个问题按学号查找并且给他C语言成绩加10分;

首先定义q指针;

然后定义一个整形变量,并且输如想加分的学号;

用第二个问题的for循环;

然后在for循环里面用if语句如果学号等于你想加分的学号,那么加上10分;


这次作业大体上就是这样,同学们仅供参考;


你可能感兴趣的:(第二十一次课课后作业)