线性表顺序存储实验

上传人:小** 文档编号:54434111 上传时间:2018-09-12 格式:DOC 页数:9 大小:85.57KB
返回 下载 相关 举报
线性表顺序存储实验_第1页
第1页 / 共9页
线性表顺序存储实验_第2页
第2页 / 共9页
线性表顺序存储实验_第3页
第3页 / 共9页
线性表顺序存储实验_第4页
第4页 / 共9页
线性表顺序存储实验_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《线性表顺序存储实验》由会员分享,可在线阅读,更多相关《线性表顺序存储实验(9页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告学号: * * 年 * 月 * 日系别*专业*班级1 班姓名*课程名称 数据结构课程类型专业必修学时数2实验名称线性表的顺序存储实验实验目的和要求:(1) 了解线性表的顺序存储方法,掌握在 VC 环境下上机调试顺序表的基本方法。(2) 掌握顺序表的插入、删除、查找、求表长以及有序顺序表的合并算法的实现实验内容:一、 顺序表基本操作(顺序表的插入、删除、查找、求表长以及有序顺序表的合并算法 的实现)的实现 源代码: #include #include #define Max_Size 101 #define Increase 10typedef struct list char

2、*array; int length; List;/函数功能:创建线性表 void Creat(List *L) (*L).array = (char *)malloc(Max_Size*sizeof(char);if(!(*L).array) printf(“线性表建立失败!n“); exit(0); else (*L).length = 0; printf(“线性表已建立!n“); /函数功能:初始化线性表 void Initial(List *L) int count; int i;printf(“请输入预输入元素的个数:“); scanf(“%d“, for(i=0; i(*L).le

3、ngth+1) printf(“插入位置不合法!n 请重新输入插入位置:“); scanf(“%d“, if(*L).length = Max_Size) (*L).array = (char *)realloc(*L).array,(Max_Size + Increase)*sizeof(char);if(!(*L).array) printf(“空间已满!n“); exit(0); for(i=(*L).length-1; i=m-1; i-) (*L).arrayi+1 = (*L).arrayi; (*L).arraym-1 = e; (*L).length+;for(i=0; i(*

4、L).length; i+) printf(“%d “,(*L).arrayi); printf(“n“); /函数功能:从线性表中删除元素 void Delete(List *L) int m,i=0; int s,j,k=0; int record;record=(*L).length;printf(“请输入删除的元素值:“); scanf(“%d“,while(k (*L).length) if(*L).arrayk != s) k+; else for(j=k+1; j(*L).length; j+) (*L).arrayj-1 = (*L).arrayj;(*L).length-;

5、if(k=record) printf(“未找到该元素!n“); else printf(“删除后的线性表为:n“); for(i=0; i(*L).length; i+) printf(“%d “,(*L).arrayi); printf(“n“); /函数功能:在线性表中查找元素 void Find(List *L) int i,m;printf(“请输入要查的元素值:“); scanf(“%d“, for(i=0; i(*L).length; i+) if(m=(*L).arrayi) printf(“%d 位于 第 %d 个位置n“,m,i+1); break; if(i=(*L).l

6、ength) printf(“线性表中无该元素!n“); /函数功能:将两个线性表合并成一个 void Combine(List *La,List *Lb,List *Lc) int i; int a=0, b=0, c=0;while(a(*La).length else (*Lc).arrayc+ = (*Lb).arrayb+; while(a(*La).length) (*Lc).arrayc+ = (*La).arraya+; while(b(*Lb).length) (*Lc).arrayc+ = (*Lb).arrayb+; (*Lc).length = c; printf(“L

7、c = “); for(i=0; i(*Lc).length; i+) printf(“%d “,(*Lc).arrayi); printf(“n“); void main() int i, m,e; int chioce; List La, Lb, Lc, L; int x=0;printf(“1 创建线性表n2 线性表的初始化n3 向线性表中插入元素n4 删除线性表中 的元素n5 查找线性表中的元素n6 求线性表的长度n7 合并两个线性表n8 结束进程 n“); while(x!=8) printf(“请选择:“); scanf(“%d“,switch(x) case 1: Creat(

8、break;case 2: Initial( break;case 3: printf(“输入插入位置:“); scanf(“%d“, printf(“输入插入元素的值:“); scanf(“%d“, printf(“插入元素的结构为:n“); Insert( break;case 4: Delete( break;case 5: Find( break;case 6: printf(“此时表长为:%dn“,L.length); break;case 7: printf(“创建线性表 Lan“); Creat( printf(“初始化线性表 Lan“); Initial( printf(“创建线性表 Lbn“); Creat( printf(“初始化线性表 Lbn“); Initial( printf(“创建合并结果线性表 Lcn“); Creat( printf(“La 和 Lb 的合并结果为 Lcn“);Combine( break;case 8: printf(“结束进程n“); exit(0); break; 运行结果:错误分析:主函数中定义线性表,在调用时需引用指针,否则无法正常进行插入,删除;实验总结: 1、注意传递参数时传入地址才能改变变量中的内容 2、顺序表中删除实质就是指的覆盖成绩批阅教师批阅日期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号