ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:99.23KB ,
资源ID:4399747      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4399747.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(太原理工大学数据结构试验.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

太原理工大学数据结构试验.docx

1、太原理工大学数据结构试验本科实验报告课程名称: 数据结构 实验项目:线性结构,树形结构,图的应用,查找 ,排序 实验地点: 行远楼A102 专业班级: 软件1334 学号: 学生姓名: 指导教师: 杨 崇 艳 2014年 12月 14 日实验一:线性结构一、实验目的和要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。二、存储结构和算法思想存储结构采用链式存储结构算法的基本思想建立链表:当读入字符不是结束符时,给结点分配存储空间,写数据域,将新结点

2、插到表尾;插入字符:根据读入的字符在链表中找插入位置,将新结点插入到该位置之前;删除字符:根据读入的删除字符在链表中找到被删结点后,将其从链表中删除;链表逆转:从链表的第一个结点开始对所有结点处理,将每个结点的前驱变为它的后继;打印链表:从链表的第一个结点开始,依次打印各个结点的数据域。三、主要仪器设备惠普242 G1型笔记本电脑四、操作方法与实验步骤实习题源代码#include stdio.h#include malloc.h#include conio.htypedef struct node char a; struct node *link;node,*nodelink;void re

3、adlink(nodelink head) nodelink p,q; char c; p=head; printf(请输入顺序表中的递增有序元素:); scanf_s(%c,&c); if(c=n) printf(顺序表为空nn); while(c!=n) q=(nodelink)malloc(sizeof(node); q-a=c; p-link=q; p=q; scanf_s(%c,&c); p-link=0;/构造顺序表int add(nodelink head) nodelink p; p=head; if(p-link=0) return 0; while(p-link!=0) i

4、f(p-a p-link-a) printf(输入有误请重新输入nn); return 0; p=p-link; return 1;/判断输入元素是否递增void insert(nodelink head,char x) nodelink p,q,m; int i=0; p=head; q=(nodelink)malloc(sizeof(node); q-a=x; m=p; while(p-link!=0) if(p-a = x) q-link=m-link; m-link=q; i=1; break; m=p; p=p-link; if(i=0) p-link=q; q-link=0; /插

5、入元素void main() nodelink head; nodelink p; char x,z; head=(nodelink)malloc(sizeof(node); head-link=0; readlink(head); while(add(head)=0) readlink(head); printf(您输入的顺序表为:); for(p=head-link;p!=0;p=p-link) printf(%c,p-a); printf(n请输入您要插入的字符:); x=getchar(); insert(head,x); printf(插入%c后的顺序表为:,x); for(p=he

6、ad-link;p!=0;p=p-link) printf(%c,p-a); printf(nn); scanf_s(%c,&z); printf(nnn); main();五、实验结果与分析 实习题运行结果截图6、讨论、心得顺序存储结构是在内存中开辟一个连续的空间用来存储数据,因此对于内存的需求和苛刻,必须是连续的空间.在数据查找(特别是不按照规律排列的数据),时间复杂度教少.效率高. 链式存储结构是采取连表指针来指示数据的存储位置,这就可以是在内存中随意的存储,没有必须连续储存空间的要求,对于内存的要求相对教容易.但是要是是从小到大顺序排列的数据,链式存储结构的时间复杂度教小,效率高.但是

7、要是不规则排布的数据一般时间复杂度较高,效率更低 实验二:树形结构一、实验目的和要求熟悉树的各种表示方法和各种遍历方式,掌握有关算法的实现,了解树在计 算机科学及其它工程技术中的应用 编写递归算法,计算二叉树中叶子结点的数目。二、存储结构和算法思想存储结构采用二叉链表存储。算法的基本思想采用递归方法建立和遍历二叉树。首先建立二叉树的根 结点,然后建立其左右子树,直到空子树为止。后序遍历二叉树时,先遍历左子树,后遍历右子树,最后访问根结点。三、主要仪器设备惠普242 G1型笔记本电脑四、操作方法与实验步骤 实习题源代码#include#includestruct BiTree char data

8、; struct BiTree *lchild; struct BiTree *rchild; struct BiTree* CreatBiTree() char x; struct BiTree* p; scanf(%c,&x); if(x!=.) p=(struct BiTree*)malloc(sizeof(struct BiTree); p-data=x; p-lchild=CreatBiTree(); p-rchild=CreatBiTree(); else p=NULL; return p;int LeafNum(struct BiTree *T) if(!T) return 0;

9、 else if(!T-lchild&!T-rchild) return 1; else return LeafNum(T-lchild)+LeafNum(T-rchild); int main() int num; struct BiTree* T; printf(请按先序序列输入二叉树n); T=CreatBiTree(); while(T=NULL) printf(empoty,again:n); T=CreatBiTree(); num=LeafNum(T); printf(n二叉树叶子结点为:%dn,num); printf(nnnn); main(); return 0; 五、实验

10、结果与分析实习题运行结果截图6、讨论、心得树型结构是一类最重要的非线性,可以体现分支结构和层次结构 实验三:图的应用一、实验目的和要求熟悉图的存储结构,掌握有关算法的实现,了解图在计算机科学及其他工程技术中的应用。采用邻接表存储结构,编写一个求无向图的连通分量个数的算法。二、存储结构和算法思想存储结构图采用邻接矩阵的方式存储。 算法的基本思想采用广度优先搜索的方法,从顶点A开始,依次访问与A邻接的顶点VA1,VA2,.,VAK, 访问遍之后,若没有访问B,则继续访问与VA1邻接的顶点VA11,VA12,.,VA1M,再访问与VA2邻接顶点.,如此下去,直至找到B,最先到达B点的路径,一定是边数

11、最少的路径。实现时采用队列记录被访问过的顶点。每次访问与队头顶点相邻接的顶点,然后将队头顶点从队列中删去。若队空,则说明到不存在通路。在访问顶点过程中,每次把当前顶点的序号作为与其邻接的未访问的顶点的前驱顶点记录下来,以便输出时回溯。三、主要仪器设备惠普242 G1型笔记本电脑四、操作方法与实验步骤 实习题源代码#include#include#includeint n;struct VNode int position; struct VNode* next;struct ArcNode int mark; struct VNode* first;void DFS(struct ArcNod

12、e* v,struct ArcNode* w) struct VNode* L; w-mark=1; L=w-first; while(L!=NULL) if(v+(L-position)-mark=0) DFS(v,(v+L-position); L=L-next; int main() int i,j,k; int num=0; struct ArcNode* p; struct VNode* temp; struct VNode* flag; printf(该无向图有多少个顶点:n); scanf(%d,&n); while(n1) printf(你输入的值不合理,请重新输入:n); s

13、canf(%d,&n); p=(struct ArcNode*)malloc(n*sizeof(struct ArcNode); for(i=0;iposition=k; temp-next=NULL; pi.first=temp; pi.mark=0; flag=temp; scanf(%d,&k); while(k!=-1) temp=(struct VNode*)malloc(sizeof(struct VNode); temp-position=k; temp-next=NULL; flag-next=temp; flag=temp; scanf(%d,&k); i=0; while(

14、pi.mark=0) DFS(p,(p+i); num+; i=0; while(pi.mark!=0&in) i+; printf(此图的连通分量个数为:%dn,num); system(pause); return 0; 五、实验结果与分析实习题运行结果截图6、讨论、心得对图结构和矩阵之间的概念和关系还不是很了解,在写程序是出现了很多错误,我自己对输出图结构这方面还不是很了解,通过慢慢摸索,写出了程序,有很大的成就感。实验四:查找一、实验目的和要求 通过本次实验,掌握查找表上的有关查找方法,并分析时间复杂度。2、存储结构和算法思想存储结构有序表采用顺序方式存储。算法的基本思想首先用待查找记

15、录与查找区间中间位置记录比较,若相等则查找成功,返回该记录在表中的位置数,若小于中间位置记录,则修改区间上界为中间位置减 1,若大于中间位置记录,则修改区间下界为中间位置加 1,在新的区间内继续查找。当查找区间下界大于上界,则该记录不存在。三、主要仪器设备惠普242 G1型笔记本电脑四、操作方法与实验步骤 实习题源代码#include#include#includestruct BiTree int data; struct BiTree* lchild; struct BiTree* rchild;struct BiTree* CreatBiTree() int x; struct BiTr

16、ee* p; scanf(%d,&x); if(x!=0) p=(struct BiTree*)malloc(sizeof(struct BiTree); p-data=x; p-lchild=CreatBiTree(); p-rchild=CreatBiTree(); else p=NULL; return p;void SearchBST(struct BiTree* T,int k) if(!T) printf(你查找的数据不存在!n); else if(T-data=k) printf(你查找的数据存在!n); else if(kdata) SearchBST(T-lchild,k);

17、 else SearchBST(T-rchild,k); int main() int key; char temp; struct BiTree* T; printf(请按先序序列输入排序二叉树n); T=CreatBiTree(); while(T=NULL) printf(你输入的对叉树为空,请重新输入:n); temp=getchar(); T=CreatBiTree(); printf(请输入你要查找的数据:n); scanf(%d,&key); SearchBST(T,key); system(pause); main(); return 0;五、实验结果与分析实习题运行结果截图7

18、、讨论、心得通过这次实验,我对查找方法有了更多的熟悉,对问题有了更深刻的认识。 实验五:排序一、实验目的和要求通过本次实验,掌握线性表的排序方法,并分析时间复杂度。二、存储结构和算法思想存储结构待排序记录顺序存储。算法的基本思想快速排序算法每次任取一个记录的关键字为标准,将其余记录分为两组,将所有关键字小于或等于标准的记录都放在它的位置之前,将所有关键字大于标准的记录都放在它的位置之后。对这两组再进行快速排序,直到完全有序。每递归1次,递归深度加1。三、主要仪器设备惠普242 G1型笔记本电脑四、操作方法与实验步骤 实习题源代码#define NULL 0#include #include #

19、include typedef struct node int x; struct node *next;NODE;void read(NODE *head,int n) int x; NODE *p; if(n=0) return 0; p=(NODE*)malloc(sizeof(NODE); head-next=p; scanf(%d,&x); p-x=x; read(p,n-1);void write(NODE *head,int n) NODE *p; if(n=0) return; p=head-next; printf(%d ,p-x); write(p,n-1);void px

20、(NODE *head,int n) int min; int i,s=0; NODE *p; NODE *r; NODE *t; p=head-next; r=head-next; t=head; min=p-x; for(i=0;ip-x) min=p-x; r=p; s=i; p=p-next; for(i=0;inext; t-next=r-next; r-next=head-next; head-next=r; px(head-next,n-1);void main() int n; NODE *head; head=(NODE *)malloc(sizeof(NODE); prin

21、tf(输入个数n:); scanf(%d,&n); printf(输入%d个数据:n,n); read(head,n); printf(您输入的数据为:n); write(head,n); printf(n排序后的数据为:n); px(head,n); write(head,n); getchar();五、实验结果与分析实习题运行结果截图6、讨论、心得时间复杂度比较:排序方法 最好情况 最坏情况 平均情况 稳定性 冒泡排序 O(n) O(n2) O(n2) 稳定快速排序 O(nlogn) O(n2) O(nlogn) 不稳定简单选择排序 O(n2) 不稳定堆排序 O(nlogn) 不稳定直接插入排序 O(n) O(n2) O(n2) 稳定希尔排序 O(n1.3) 不稳定归并排序 O(nlogn) O(nlogn) O(nlogn) 稳定基数排序 O(d(r+n) 稳定

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1