1 线性结构的操作
1.1实验数据
学生的学号、姓名、性别、年龄
1.2程序要求
1、用线性表的顺序存储(数组)保存数据
(1)键盘输入你所在宿舍的同学信息到数组;
(2)遍历输出所有学生数据;
(3)按姓名查找并输出指定学生数据,统计查找的次数;
(4)把数组内容输出到文件;
(5)从文件读入学生数据,按学号排序后显示在屏幕;
(6)某同学调入你的宿舍,请增加其信息;并查看增加后的结果;
(7) 某同学调离你的宿舍,请删除其信息;并查看删除后的结果;
2、用线性表的链式存储(链表)保存数据,重新实现第1题的功能。
1.4 程序清单及详解
//顺序表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
typedef struct
{
int num;
char name[10];
char gender[3];
int age;
}studen;
typedef struct
{
studen elen[maxsize];
int last;
}seqlist;
seqlist s;
int k=1;//统计查找次数
static int len;//静态全局变量,存放输入的宿舍人数
void init()
{
int i;
printf("请输入学生宿舍人数:");
scanf("%d",&len);
s.last=len-1;
for(i=0;i<=s.last;i++)
{
printf("请输入第%d个学生学号:",i+1);
scanf("%d",&s.elen[i].num);
printf("请输入第%d个学生姓名:",i+1);
scanf("%s",s.elen[i].name);
printf("请输入第%d个学生性别:",i+1);
scanf("%s",s.elen[i].gender);
printf("请输入第%d个学生年龄:",i+1);
scanf("%d",&s.elen[i].age);
printf("\n");
}
printf("输入学生信息完成!");
}
void stuprint()//显示函数
{
int i;
printf("学生信息\n");
printf("学号\t姓名\t性别\t年龄\n");
for(i=0;i<=s.last;i++)
{
printf("%d\t%s\t%s\t%d\n",s.elen[i].num,s.elen[i].name,s.elen[i].gender,s.elen[i].age);
}
printf("\n");
}
void locate()//按照姓名查找
{
int i=0;
char xm[10];
printf("请输入要查找的学生姓名:");
scanf("%s",xm);
while((i<=s.last)&&(strcmp(s.elen[i].name,xm))!=0)
{
i++;
k++;
}
printf("查找的次数为:%d",k);
printf("\n");
if(i<=s.last)
{
printf("学号:%d\t姓名:%s\t性别:%s\t年龄:%d\n",s.elen[i].num,s.elen[i].name,s.elen[i].gender,
s.elen[i].age);
}
else
printf("未找到该学生!\n");
}
void insertlist(seqlist *s)//插入
{
int i;
int k;
printf("请输入要插入的位置");