班级: 姓名: 学号: 实验一 线性表的基本操作一、实验目的1、掌握线性表的定义;2、掌握线性表的基本操作,如建立、查找、插入与删除等。二、实验内容定义一个包含学生信息(学号,姓名,成绩)的顺序表与链表(二选一),使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号与成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录;(7) 统计表中学生个数。三、实验环境Visual C++四、程序分析与实验结果#include#include#include#include#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status; // 定义函数返回值类型 typedef struct{char num[10]; // 学号char name[20]; // 姓名double grade; // 成绩 }student;typedef student ElemType;typedef struct LNode{ElemType data; // 数据域struct LNode *next; //指针域 }LNode,*LinkList;Status InitList(LinkList &L) // 构造空链表 L {L=(struct LNode*)malloc(sizeof(struct LNode));L->next=NULL;return OK;}Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到 i 位置的数据域,返回给 e {LinkList p;p=L->next;int j=1;while(p&&jnext;++j;}if(!p||j>i) return ERROR;e=p->data;return OK;}Status Search(LNode L,char str[],LinkList &p) // 根据名字查找 {p=L、next; while(p){if(strcmp(p->data、name,str)==0)return OK;p=p->next;}return ERROR;}Status ListInsert(LinkList L,int i,ElemType e) // 在 i 个位置插入某个学生的信息 {LinkList p,s;p=L;int j=0;while(p&&jnext;++j;}if(!p||j>i-1)return ERROR;s=(struct LNode*)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return OK;}Status ListDelete(LinkList p,int i) // 删除 i 位置的学生信息 {int j=0;while((p->next)&&(jnext;++j;}if(!(p->next)||(j>i-1)) return ERROR;LinkList q;q=p->next;p->next=q->next; delete q;return OK;}void Input(ElemType *e){printf("姓名:"); scanf("%s",e->name);printf("学号:");...