c语言结构体加链表将学生成绩排序(求帮助)

建立学生结构体类型,包括:学号(学号11位)、姓名、3门课成绩及总分。采用链表来存放学生信息,从键盘录入10个同学的信息(总分自动计算不录入),采用头插法建立学生链表。然后对这10个同学按总分从低到高的顺序排序(即排序后链表的第一个结点存放总分最低的学生信息,每二个结点存放总分次低的学生信息,……),然后在屏幕上输出排序后的所有学生记录,并将排序好的链表写入文件中。假设本问题中,学生3门课成绩一定为[0,100]之间的正整数。要求使用冒泡排序法来完成本实验。要求采用两种方法来实现排序,即数据记录移动法和指针变量交换法。

用两种方法,有没大神可以顺带解释下数据记录移动法和指针变量交换法是什么呀?

数据移动记录法就是用一个临时变量保存要交换的数据,完成两个数据的交换,如

int tem=a;
a=b;
b=a;

指针变量交换法就是交换两个数据的地址

int p=*a;
*a=*b;
*b=p;