欢迎来到天天文库
浏览记录
ID:38600835
大小:522.00 KB
页数:20页
时间:2019-06-16
《数据结构期末综合实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、姓名李鸣蝉 学号124130313专业地理信息系统 班级12级本科学生设计报告姓名曹雨薇 学号124130302专业地理信息系统班级12级实验课程名称 数据结构指导教师何礼平开课学期2014至2015学年上学期上课时间2014年9月云南师范大学旅游与地理科学学院实验名称:数据结构综合实验实验时间:2014年12月25日1、实验目的:1)对线性表、栈、二叉树、图的新建的操作;2)对线性表、栈、二叉树、图的插入、删除、查找位置、查找前驱等操作的应用;3)对数据进行输入、输出处理的应用4)对数据进行合
2、并相关的应用;5)二叉树遍历相关应用;6)对于迪杰斯特拉算法的应用,求得最短路径;7)对数据结构有更深的理解。2、实验内容:(一)线性表1)线性表的建立以及输入、输出2)在线性表里面某个位置插入一个数3)线性表的合并(二)栈的应用1)数制转换2)迷宫(三)二叉树的遍历:先序遍历、中序遍历、后序遍历(四)最短路径分析3、实验过程及步骤:(一)线性表1.线性表的建立以及输入、输出:a)数据的输入:通过建立文件型指针FILE*fp,打开要输入的文件:fopen(“data.txt”),(图1)打开的模
3、式为”r”,即read,读取模式,然后再把读取的数据,顺序赋值到地址数组x[i]中图1data.txtb)数据的输出:即把x[i]输出c)主程序:调用数据输入、输出的方法:DataIn(intx[])、DataOut(int*x)即可d)程序代码:#defineM20#includeDataIn(intx[]){FILE*fp;inti;fp=fopen("data.txt","r");for(i=0;i4、(int*x){inti;printf("");for(i=0;i5、d)数据的插入:当从j=M-1开始,即最后一个数开始,从后面开始直到数据第i个位置,让x[j+1]=x[j],使得在i后面的数全都向后移动一位,然后把想插入的数据放在原来i的位置上;e)主程序:首先是调用数据的输入输出函数,查找前驱函数(找22的前驱),输出函数,再执行插入函数(在索引为10位置插入999),然后再输出;f)程序代码:#defineM20#includeDataIn(intx[]){FILE*fp;inti;fp=fopen("data.txt","r");fo6、r(i=0;i=i;j--)x[j+1]=x[j];x[i]7、=e;}main(){inta[M];intx;DataIn(a);DataOut(a);PriorE(a,22,&x);printf("%d",x);ListIn(a,10,999);DataOut(a);}g)程序运行效果:3.线性表的合并:a)定义结构体变量:Lnode,里面有data和*next;b)创建线性表,逆位序输入n个元素的值,建立带有表头节点的单链线性表L,首先设置单链表的头结点为data为n,然后从n开始,生成LNode型的新节点,然后输入元素值,把值插入到表头;c)输出8、单链表L:倒序输出之前输入的数据;d)合并两个表:首先是建立3个指针pa,pb,pc,其中pa和pb分别指向La表和Lb表中当前待比较插入的结点,pc指向Lc表中当前最后一个结点,当pa->data<=pb->data,则将pa所指结点链接到pc所指结点之后,否则将pb所指结点链接到pc所指结点之后。这里有两个循环,第一个循环是当pa和pb皆为非空时,当其中一个为空时,说明有一个表的元素已经归并完毕,则只要将另一个表的剩余段链接在pc所指结点之后便可以了。e)程序代码:#include
4、(int*x){inti;printf("");for(i=0;i5、d)数据的插入:当从j=M-1开始,即最后一个数开始,从后面开始直到数据第i个位置,让x[j+1]=x[j],使得在i后面的数全都向后移动一位,然后把想插入的数据放在原来i的位置上;e)主程序:首先是调用数据的输入输出函数,查找前驱函数(找22的前驱),输出函数,再执行插入函数(在索引为10位置插入999),然后再输出;f)程序代码:#defineM20#includeDataIn(intx[]){FILE*fp;inti;fp=fopen("data.txt","r");fo6、r(i=0;i=i;j--)x[j+1]=x[j];x[i]7、=e;}main(){inta[M];intx;DataIn(a);DataOut(a);PriorE(a,22,&x);printf("%d",x);ListIn(a,10,999);DataOut(a);}g)程序运行效果:3.线性表的合并:a)定义结构体变量:Lnode,里面有data和*next;b)创建线性表,逆位序输入n个元素的值,建立带有表头节点的单链线性表L,首先设置单链表的头结点为data为n,然后从n开始,生成LNode型的新节点,然后输入元素值,把值插入到表头;c)输出8、单链表L:倒序输出之前输入的数据;d)合并两个表:首先是建立3个指针pa,pb,pc,其中pa和pb分别指向La表和Lb表中当前待比较插入的结点,pc指向Lc表中当前最后一个结点,当pa->data<=pb->data,则将pa所指结点链接到pc所指结点之后,否则将pb所指结点链接到pc所指结点之后。这里有两个循环,第一个循环是当pa和pb皆为非空时,当其中一个为空时,说明有一个表的元素已经归并完毕,则只要将另一个表的剩余段链接在pc所指结点之后便可以了。e)程序代码:#include
5、d)数据的插入:当从j=M-1开始,即最后一个数开始,从后面开始直到数据第i个位置,让x[j+1]=x[j],使得在i后面的数全都向后移动一位,然后把想插入的数据放在原来i的位置上;e)主程序:首先是调用数据的输入输出函数,查找前驱函数(找22的前驱),输出函数,再执行插入函数(在索引为10位置插入999),然后再输出;f)程序代码:#defineM20#includeDataIn(intx[]){FILE*fp;inti;fp=fopen("data.txt","r");fo
6、r(i=0;i=i;j--)x[j+1]=x[j];x[i]
7、=e;}main(){inta[M];intx;DataIn(a);DataOut(a);PriorE(a,22,&x);printf("%d",x);ListIn(a,10,999);DataOut(a);}g)程序运行效果:3.线性表的合并:a)定义结构体变量:Lnode,里面有data和*next;b)创建线性表,逆位序输入n个元素的值,建立带有表头节点的单链线性表L,首先设置单链表的头结点为data为n,然后从n开始,生成LNode型的新节点,然后输入元素值,把值插入到表头;c)输出
8、单链表L:倒序输出之前输入的数据;d)合并两个表:首先是建立3个指针pa,pb,pc,其中pa和pb分别指向La表和Lb表中当前待比较插入的结点,pc指向Lc表中当前最后一个结点,当pa->data<=pb->data,则将pa所指结点链接到pc所指结点之后,否则将pb所指结点链接到pc所指结点之后。这里有两个循环,第一个循环是当pa和pb皆为非空时,当其中一个为空时,说明有一个表的元素已经归并完毕,则只要将另一个表的剩余段链接在pc所指结点之后便可以了。e)程序代码:#include
此文档下载收益归作者所有