




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计读书工程报告黑龙江大学数据结构课程设计读书报告学 院软件学院年 级2011级专 业软件工程学 号20103832姓 名崔雯赫日 期成 绩黑龙江大学计算机科学技术学院黑龙江大学软件学院一、基本理论阐述在计算机及其应用的各个领域中,都回用到各种各样的数据结构,学会分析研究计算机加工对象的特性,选择和数的数据结构和存储表示,以及编制相应的实现算法,是计算机工作者不可缺少的知识。因此“数据结构”是高等院校计算机专业教学中得一门技术基础课程,在我国当前的计算机专业教学计划中,它是核心课程之一。随着我国进一步的开放,我们需要扩大国际交流,加强学习国外的现金经验。在当前形势下,“数据结构”仍
2、具有重大意义和价值。相辅相成的关系对于培养计算机专业人才有极大的促进关系。二、当前应用现状 “数据结构用C语言描述”详细的介绍各种最常用的数据结构,阐述各种数据结构内涵的逻辑关系,讨论他们在计算机中得存储表示,以及在这些数据结构上的运算和时间的执行算法,对于算法的效率进行简要的分析和讨论。 全书包含十章内容:前四章主要介绍几种基本的数据结构,即:线性表、栈、队列、和串,它们均属于线性结构;第五至七章叙述非线性结构,它们是多为数组、广义表、树和图;第八、九章分别介绍数据处理中广泛使用的技术排序与查找。第十章文件并不在教学大纲(本校)内。 全书既注重原理又重视实践,配有大量的例题和习题,解释比较详
3、细。书中得算法均由C来描述并且能再机器上运行。对于高校计算机专业的学生使用较为合适。三、对线性结构和最优二叉树部分的体会数据结构课程设计目的为了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。课程设计(一)学生学籍信息管理系统此实验主要是对于前4章的运用,对于线性结构的增、删、找、查的操作。在这就对比一下数组,线性表和链表的区别。数组就是一个连续的存储空间
4、,用下表进行标记区分。线性表同样是一段连续的存储空间,但是通过相应的定义使其前后连贯,访问则是可以直接访问。链表是动态的存储空间,并不一定是一段连续的存储空间。但访问需要顺序访问,因为用户永远不知道每一个结点的地址,也无法进行直接访问。针对于增、删则是对于链表的操作。增加有两种方法:头插法,尾插法。顾名思义头插法就是把新的结点插入在头结点的前面,而尾插法则是把新的结点插入在头结点的后面。这两种方法各有优势。人工建栈的思想与其有相同之处。查找在此设计中选用了起泡法排序。最重要的算是文件的应用了。C中文件的读写在此程序中有着举足轻重的意义。对于数据的保存与删改实现了可保留化。课程设计(二)哈弗曼编
5、码译码器此课程设计主要是针对于最优二叉树进行实例演练。哈弗曼编码则是通过最优二叉树为基础进而达到ASL最小。那么在最优二叉树这个知识点上,权值可谓是比较重要的一个点了。对于权值的存储可以使用链表与数组。但通过对比,数组的存储方式更适合。通过权值的比较,进而生成序列。通过左右孩子建立最优二叉树。四、课程设计过程中的应用与实践课程设计(一)学生学籍信息管理系统要求:设计一个学生信息管理系统,实现对学生基本信息的添加、删除、修改和查询等操作,要求为:(1) 多种方式建立学生信息(2) 浏览所有学生信息。(3) 按照学号对所有学生信息进行升序、降序排列,并输出(4) 按姓名、学号等方式,实现对学生信息
6、精确查询、模糊查询,并输出屏幕显示 (5) 学生信息的插入、删除、修改。(6) 数据的统计功能核心代码:void FIND(student *head) /模糊查找if(head->name0=a0&&head->name1=a1)void delet(student *head) /删除head->prior->next=head->next;head->next->prior=head->prior;void edit(student *head) / 编辑void add(student *head) /增加head->
7、;next->prior=p;p->next=head->next;head->next=p;p->prior=head;freopen("学生管理系统.txt","r",stdin);/文件while(1)cout<<"查找=f "<<"模糊查找=F "<<"删除=d "<<"编辑修改=e "<<"查看=l "<<"增加=a"<
8、<endl;主要流程:(1) 添加信息(2) 进行信息的改查(3) 根据用户操作调用相应函数进行编辑(4) 完成任务存在的问题:对于链表的文件操作不能成功进行读写。解决方案:尚未解决。准备寻求老师帮助。课程设计(二)哈弗曼编码译码器要求:设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(后缀名.cod);反过来,可将一个编码文件还原为一个文本文件(.txt)要求为:(1)输入一个待压缩的文本文件名,统计文本文件中各字符的个数作为权值,生成哈夫曼树;(2)将文本文件利用哈夫曼树进行编码,生成编码文件(后缀名cod);(3)输入一个待解压的压缩文件名称,并利用
9、相应的哈夫曼树将编码序列译码;(4)显示指定的编码文件和文本文件;(5)把哈夫曼编码用二进制位紧缩到一个变量中,利用位运算进行真正的数据压缩,并求压缩比。(此选项选作)核心代码:void Open(char s)文件打开FILE *fp;void Save(char s) 保存if(fp=fopen(name,"wt")=NULL)void SearchStr(char s,char str,int count) 查找出现次数void SelectMin(HFMTree HT,int k,HFMTree *HT1,HFMTree *HT2)if(p->weight&l
10、t;min&&p->Parent=0&&p!=*HT1) /令第二个最小的节点不等于第一个节点void CreatHFMTree(HFMTree *HT,int count)哈弗曼树建立void HFMCode(HFMTree HT,CodeNode HC,char str)存储for(i=0;i<n;i+)HCi.start=n-1;for(q=p;q->Parent;q=q->Parent) if(q=q->Parent->LChild)HCi.code-HCi.start='0'elseHCi.code-
11、HCi.start='1'p=p->next; /判断下一个叶子节点void TotalCoding(char s,CodeNode HC,char code)code0='0' /编码数组初始化for(i=0;si;i+) /将每个字符在哈夫曼编码表中对应的编码存入存放总编码的数组中void DeCoding(char code,HFMTree HT,char str,char s)for(root=HT;root->Parent;root=root->Parent); /用root指向哈夫曼树的根结点if(p->LChild=NULL
12、&&p->RChild=NULL) /到根节点时将该节点对应的字符输出p=root; /回溯到根结点主要流程:(1) 对于已存在文件进行读取。(2) 确定存在的字符的个数进行哈弗曼树的建立,生成最优二叉树。(3) 对于其进行编译操作。完成任务问题的发现与解决:主要对于译码过程的存贮与分析存在相应问题。解决方案:通过手写进行程序过程分析。通过伪指令进行程序的修改。五、读书工程心得总结对于数据结构这门学科,我理解为设计性学科。他需要把理论变成实践,重要性可想而知。因为它是编程的一门基本学科。刚开始学得时候有很多地方不理解,每次上课时老师都会给我们不同的题目去思考,对于编程能力不强的我则是面临巨大挑战。编程拒绝浮躁,只有自己一点一滴的去写程序。去修改程序才能得到质的飞跃。程序的编辑error是我最不想看到的。但现在而言这样两个大实验则是从几百个错误中走出来的。往往就是个括号。这说明了一个问题,就是编程习惯的问题。通过跟老师的交流让我慢慢的去深入学习数据结构它本质的知识,通过老师一次次的帮助才能完成如今的课题。数据结构不是半年的课程。对于一个程序员来说,算法是程序的灵魂,那么我们作为创造者就要赋予程序一个及优化的灵魂。现在想起来为了调试程序跟同学发生争执,自己抓狂,这对我来说都是一种收获。现在的付出是为了以后能有更好的发展,即使很难,花再大得心血换来都是值得的。一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-ZGXK 024-2024 青储玉米品种试验规范
- 二零二五年度企业代为管理员工社保缴费及报销流程合同
- 二零二五年度购房按揭贷款利率调整合同
- 2025年度酒店入住智能家居体验合同
- 2025年度汽车零部件订车合同违约赔偿标准及责任界定
- 二零二五年度公寓楼出租合同样本(含精装修、家具家电及物业费)
- 二零二五年度医院药剂科药品配送与劳务合作合同
- 二零二五年度临时项目经理聘用与项目风险预警协议
- 二零二五年度租赁型住房委托管理服务合同
- 二零二五年度旅游产业投资合作框架协议
- 2025年山东泰山财产保险股份有限公司招聘笔试参考题库含答案解析
- 初中物理竞赛及自主招生讲义:第7讲 密度、压强与浮力(共5节)含解析
- 农村自建房施工合同范本(包工包料)
- 高中主题班会 梁文锋和他的DeepSeek-由DeepSeek爆火开启高中第一课-高中主题班会课件
- 污水处理设施运维服务投标方案(技术标)
- 一年级下册书法教案 (一)
- 2025幼儿园疫情报告制度及流程
- 《浙江省应急管理行政处罚裁量基准适用细则》知识培训
- 2024年全国职业院校技能大赛高职组(康复治疗技术赛项)考试题库(含答案)
- 2025年山东健康集团招聘笔试参考题库含答案解析
- 《中外广播电视史》课件
评论
0/150
提交评论