1、6实验四栈和队列及其应用实验五二叉树及其应用实验六 图及其应用实验七查找实验八排序实验名称 顺序表及其应用 实验性质 验证性 实验学时数 2学时 一、实验目的1深入了解线性表的顺序存储结构。2熟练掌握在顺序存储结构上进行插入、删除等操作的算法。3通过线性表结构解决现实中的一些问题。二、实验内容 1. 线性表的顺序存储结构。2. 顺序存储结构上进行插入、删除等操作的算法。3. 通过线性表结构解决现实中的一些问题。三、实验过程1、实验题目 问题描述设计一个顺序表,要求:(1)包含不少于5个元素,并在屏幕上显示。(2)对建好的顺序表实现查找、插入、删除等操作,并程序执行结果显示到屏幕上。(3)设计一
2、个选择菜单。基本要求(1)按实验内容编写完整的程序,并上机验证。(2)实验完成后,提交电子档教师验收程序,并提交填写好的实验报告。测试数据由学生依据软件工程的测试技术自己确定。注意测试边界数据。2、源程序#includestdio.hmalloc.h#define MAXSIZE 200 /线性表允许的最大长度#define datatype inttypedef struct /定义线性表的结构 datatype dataMAXSIZE;/表示线性表(a1,a2,.,an) int last;/last表示线性表的实际长度SeqList;void init_SeqList(SeqList *
3、L)/线性表初始化 L-last=-1;int insert_SeqList(SeqList *L,int i, datatype x)/插入操作 int j; if(iL-last+2) printf(插入位置不合法!); return 0; if(L-last=MAXSIZE-1) printf(表已满无法插入!for(j=L-last;j=i-1;j-)dataj+1=L-dataj;datai-1=x;last+;插入成功nint Delete_SeqList(SeqList *L,int i)/删除操作 int k;last+1) 删除位置不合法! return 0; for(k=i
4、;kk+)datak-1=L-datak;last-;删除成功!nint Location_SeqList(SeqList *L, datatype x) /按值查找 int i,index; for(i=0;idatai);int main() /主函数void main() SeqList L; int i,choice; init_SeqList(&L);请输入线性表的长度: scanf(%d,&L.last);请输入线性表的元素:L.last;i+) L.datai); do请选择您想要对线性表的操作: 1:插入 2:删除 3:查找 4:打印 0:退出nchoice); switch(
5、choice) case 1: int x,j;请输入要插入的数的位置和数值: scanf(%d%dj,&x); insert_SeqList(&L,j,x); break; case 2: int m;请输入要删除的数的位置:m); Delete_SeqList(&L,m); case 3: int n;请输入要查找的数:n);您要查找的数位于线性表的第%d位.n,Location_SeqList(&L,n); case 4: print(& case 0: default:请选择正确的操作! break; while(choice!=0);谢谢使用!四实验小结初步了解线性表的顺序存储结构,
6、及其定义格式。掌握在顺序表上进行插入、删除等操作的算法。但在顺序表的操作上不是十分熟练。五成绩实验名称 单链表及其应用 实验性质 综合性 实验学时数 4学时 1深入了解线性表的链式存储结构。2熟练掌握在链式存储结构上进行插入、删除等操作的算法。1. 线性表的链式存储结构。2. 链式存储结构上进行插入、删除等操作的算法。(1)用头插法或尾插法建立一个单链表,并将结果显示到屏幕上。(2)对建好的单链表实现查找、插入、删除、修改等操作。提高篇(选作)建立一个有序单链表,实现上述操作。typedef struct Node char data; struct Node* next;Node,*link
7、list;void createfromtail(linklist L) Node *r,*s; int flag=1; char c; r=L;请输入线性表的元素以$结束: while(flag) c=getchar(); if(c!=$) s=(Node*)malloc(sizeof(Node); s-data=c; r-next=s; r=s; else flag=0; r-next=NULL;char get(linklist L,int i) int j; Node *p; if(inext!=NULL)&(jnext; j+; if(i=j)return p-data; else
8、return 0;int inslist(linklist L,int i, char x) Node *pre,*s;=0) printf(pre=L;k=0; while(pre!=NULL&i-1) pre=pre- k=k+1; if(! pre) else s=(Node*)malloc(sizeof(Node); s-data=x;next=pre- pre- int deilist(linklist L,int i)Node *pre,*r; pre=L; while(pre- pre=pre- k=k+1;(pre-next) printf(删除的节点位置不合法! r=pre-
9、next=r- free(r); return 1;void alterlist(linklist L, int i,char x) int j; linklist p;修改位置不合法! while(p- p-修改成功!void print(linklist L) linklist p;p=L-while(p)%c ,p-data); p=p-printf(int main() linklist L; int i,choice,x,j; createfromtail(L); do修改 5: char c;请输入要插入的字符的位置:j);请输入要插入的字符: c=getchar(); insli
10、st(L,j, c);插入字符后的线性表为: print(L);请输入要删除的字符的位置: deilist(L,m);删除字符后的线性表为:请输入要查找的字符的位置:您要查找的字符为%c.n,get(L,n); int a; char x;请输入要修改的字符的位置:a);请输入要修改的字符: x=getchar(); alterlist(L,a,x);修改字符后的线性表为: case 5:print(L);break;四小结初步了解线性表的链式存储结构,及其定义格式。掌握了在链表上进行插入、删除等操作的算法。对链表的了解不是很深入,在其使用上往往会犯一些错误比如在链表中进行插入插不到指定位置,
11、删除时位置错误等。五成绩实验名称 线性表综合练习 实验性质 设计性 实验学时数 6学时 1根据实际问题,应用线性表的顺序存储结构。2根据实际问题,深入理解线性表的链式存储结构。1. 线性表的两种存储结构。2. 不同存储结构上进行插入、删除等操作的算法。设计一个学生信息系统,要求:(1)每条信息包含学号,姓名,性别,院系,宿舍等项。(2)能够对数据信息进行查找,插入,删除等。(3)选择合适的存储结构,在主程序上运行,验证其正确性,并写出程序执行结果。# includestring.hstdlib.h char number10; char name10; char sex4; char depa
12、rtment16; char dorm6; int i,n;请输入学生数: char number10,name10,sex4,department16,dorm6; Node *r,*s;请输入学生的信息!n;请输入学生学号:%s,number);请输入学生姓名:,name);请输入学生性别:,sex);请输入学生院系:,department);请输入学生宿舍号:,dorm); s=(Node*)malloc(sizeof(Node); strcpy(s-number,number);name,name);sex,sex);department,department);dorm,dorm);
13、 r=s; r-int inslist(linklist L) Node *pre,*s; int k,i;请输入插入位置i); pre=pre- s=(Node*)malloc(sizeof(Node); strcpy(s- int get(linklist L,int i) p=p- if(i=j)该学生的信息为:学号:%s number);姓名:name);性别:sex);学院:department);宿舍号:dorm);int deilist(linklist L) Node *pre,*r; pre=pre-linklist p; linklist L;查找 4: inslist(L); deilist(L);请输入要查找的学生的位置: get(L,n);对链式表有了进一步的了解,能够利用链式表解决一些实际问题。了解了链式表的优势,他不会造成空间的浪费,对于插入和删除操作上链式表比顺序表有明显的优势。实验名称 栈和队列及其应用 实验性质 设计性 实验学时数 4学时 1掌握栈与队列的抽象数据类型描述及特点。2掌握栈和队列的顺序和链式存储结构与基本算法实现。