一、实验目的
1、掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。
2、能够熟练的使用函数来实现顺序表的各种操作。
二、实验环境
1、硬件:每个学生需配备计算机一台。
2、软件:Windows操作系统+Turbo C。
三、实验要求
1、定义一顺序表的类型,并定义顺序表。
2、将教材中顺序表的建立、初始化、插入、删除等函数实现。
3、顺序表能够存储10名学生的基本信息(包括姓名、学号和成绩)。
4、由主函数按照用户要求对各个顺序表操作访问。
5、每次操作之前要有明确的说明,操作后要输出操作结果。
6、分析顺序表的插入、删除、查找的时间和空间复杂度。
四、实验内容
1、在自己的U盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。
2、完成顺序表操作的如下函数:
顺序表的建立、查找、插入与删除
//顺序表的建立、查找、插入与删除,表元素为学生信息
#define ListSize 100
#define NameSize 18
{ long num;
char Name[NameSize];
}DataType;
//结构定义
{ DataType sy[ListSize];
int length;
} SeqList;
//插入元素
{
表已满,不能增加新的项!\\n");
strcpy(list->sy[i+1].Name,list->sy[i].Name);
}
//创建初始顺序表
{
SeqList *list;
list=(SeqList *)malloc(sizeof(SeqList));
请输入学生信息,按(学号 姓名)顺序输入:\\n");
scanf("%ld",&number);
scanf("%s",name);
insertList(list,number,name);
return list;
}
//打印顺序表中的现有元素
void printList(SeqList *list)
目前顺序表中有%d个元素\\n",list->length);
{ printf("学号:%15ld,",list->sy[i].num);
姓名:%s,",list->sy[i].Name);
}
//查找
void searchList(SeqList *list, int e)
{ int i;
{ printf("要查找的学生信息为:");
学号:%15ld,",list->sy[i].num);
姓名:%s,",list->sy[i].Name);
找不到学号为%d的学生,该学生不在顺序表中,请核实后再查",e);
}
//删除元素
void deleteList(SeqList *list, int e)
{ int i;
初始状态在表末尾
while(i { strcpy(list->sy[i].Name,list->sy[i+1].Name); 找不到学号为%d的学生,该学生不在顺序表中,请核实后再进行操作",e); } void main() { long number; char name[NameSize]; int no,e; int operate; SeqList *list; 请输入初始顺序表的元素个数:(小于%d)\\n",ListSize); { printf("请选择操作:查询(1),插入(2),删除(3),退出(0)\\n"); { case 1: 查询元素,请输入需要查询的学号:\\n"); searchList(list,e); case 2: 插入元素,请输入要插入学生,按(学号 姓名)顺序输入:\\n"); case 3: 删除元素,请输入要删除的学生的学号:\\n"); case 0: }