利用结构体数组插入删除数据

请问插入和删除最后输出的那一段的代码怎么写?拜托啦,急求!!!
#include
#include
struct Student
{
int num;
char name[20];
int score;
struct Student*next;
};
int main()
{
struct Student stu[10]={{10101,"Zhao",89},{10102,"Qian" ,90},{10103,"Sun",93},{10104,"Li",94},
{10105,"Zhou",95},{10106,"Wu",96},{10107,"Zheng",97},{10108,"Wang",98},{10109,"Feng",99},{10110,"Cheng",100}};
int i;
printf(" 学号 姓名 成绩\n");
for(i=0;i<10;i++)
printf("%7d%8s%6d\n",stu[i].num,stu[i].name,stu[i].score);

printf("   ---要插入的数据---\n");

printf("   学号    姓名   成绩\n");


printf("   ---要删除的数据---\n");

printf("   学号    姓名   成绩\n");

return 0;
}



又新写的,但是插入后原来位置的数据丢失,请问该怎么改?谢谢!
#include<stdio.h>

#include
struct Student
{
int num;
char name[20];
int score;
struct Student*next;
};
int main()
{
struct Student stu[20]={{10101,"Zhao",89},{10102,"Qian" ,90},{10103,"Sun",93},{10104,"Li",94},
{10105,"Zhou",95},{10106,"Wu",96},{10107,"Zheng",97},{10108,"Wang",98},{10109,"Feng",99},{10110,"Cheng",100}};
int i;
printf(" 学号 姓名 成绩\n");
for(i=0;i<10;i++)
printf("%7d%8s%6d\n",stu[i].num,stu[i].name,stu[i].score);

printf("   ---要插入的数据下标---\n");
int a;

scanf("%d",&a);
stu[a].num=10113;
strcpy(stu[a].name ,"Chu");
stu[a].score =98;
if(i==a)
{
stu[i+1]=stu[i];
    stu[i]=stu[a];


}
printf("   学号    姓名   成绩\n");
for(i=0;i<11;i++)
printf("%7d%8s%6d\n",stu[i].num,stu[i].name,stu[i].score);

printf("   ---要删除的数据下标---\n");
int x;
scanf("%d",&x);
for(i=x;i<10;i++)
  stu[i]=stu[i+1];     
printf("   学号    姓名   成绩\n");
for(i=0;i<9;i++)
printf("%7d%8s%6d\n",stu[i].num,stu[i].name,stu[i].score);


return 0;
}

你整个链表的代码都没有,你这个是链表也不是数组

参考:http://blog.csdn.net/u012746763/article/details/46469131

推荐一个更好的想法
不要用结构体,用一个3维数组存你的数据完全可以解决你的问题
名字【2015xxx】【...】【】【】
学号【小明】【...】【】【】
成绩【98】【...】【】【】
取的时候你就按需求取就行了