中国石油大学远程教育学院《数据结构课程设计》课程设计报告模板

合集下载

数据结构课程设计报告模板参考

数据结构课程设计报告模板参考

XX学院数据结构课程设计(论文)题目:散列表的设计与实现学生XX:X攀学号:4所在院(系):数学与计算机学院专业:网络工程班级:二班指导教师:蒋斌职称:副教授2017年6 月28 日XX学院教务处制附件2:XX学院本科学生课程设计任务书注:任务书由指导教师填写。

附件3:摘要信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。

计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。

散列表的设计与实现所涉及到的操作算法都是以链表或顺序表的基本运算作为基础的,此程序通过通讯录实现,包括建立通讯录,添加记录,查询记录,删除记录,显示记录,修改记录。

通过顺序表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。

关键字:新建通讯录,散列表,散列函数,处理冲突目录摘要V 1课程设计的目的和意义 1 2需求分析 22.1需求概述 22.2需求环境 22.3功能描述 2 3整体设计(方案设计) 33.1系统功能设计 33.2处理功能设计 33.3主要模块 53.4算法模块设计 53.4.1哈希算法 53.5二次探测再散列 6 4程序结构及源代码说明 64.1程序结构说明 64.1.1哈希函数 64.1.2冲突处理函数74.2程序源码及说明8 5程序测试及运行结果说明1 65.1主菜单运行界面1 65.2各项功能测试1 65.2.1用户信息录入1 65.2.2冲突解决175.2.3用户查找17 总结18 参考文献201 课程设计的目的和意义《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

数据结构课程设计报告撰写格式

数据结构课程设计报告撰写格式

数据结构课程设计
学院名称:
专业:
班级:
姓名:
年月日
《数据结构课程设计》报告要求(字体黑体,小三,居中)
一、第一类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.程序代码
3.运行结果
4.设计体会与总结
二、第二类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.需求分析
3.概要设计
4.详细设计
5.程序代码
6.运行结果与测试
7.设计体会与总结
三、第三类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.需求分析
3.概要设计
4.详细设计
5.程序代码
6.运行结果与测试
7.设计体会与总结
要求:(1)标题为字体黑体,小三,居中
(2)小标题为宋体,四号,加粗
(3)正文要求为宋体,小四,单倍行距
(4)每个段落缩进2个汉字(4个空格)
(5)每个人报告书不得雷同,尤其第二类与第三类题目,发现雷同者一律按不及格论处。

(6)相关内容可以参考《数据结构课程设计》指导书,但不得抄袭相关内容。

数据结构课程设计报告(完整版)参考模板

数据结构课程设计报告(完整版)参考模板

第二题:电梯模拟1、需求分析:模拟某校九层教学楼的电梯系统。

该楼有一个自动电梯,能在每层停留。

九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。

乘客可随机地进出于任何层。

对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

模拟时钟从0开始,时间单位为0.1秒。

人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。

而题目的最终要求输出时:按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。

2、设计2.1设计思想:(1)数据结构设计本题中的电梯的变化,是一个动态变化的过程,要在动态过程中实现正常跳转,首先要确定各种跳转的状态,因而这里我使用枚举类型来表示电梯的各种状态的:enum {up,down,stop,home}State(home);同时初始化最初状态为电梯在本垒层。

而在电梯的运行过程中对于乘客来说,显然有一个进入电梯与出电梯的队列,因而在这里我是用的链表来实现这个过程的,同时用结构体来保存该乘客的信息:typedef struct passage{int now;//乘客当前所在的位置int dis;//乘客的目地地int wait;//最长的等待的时间int waitnow;//已经等待的时间struct passage *next;}Passage;虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:typedef struct lift{int count_C;//计数电梯已到达的层数int count_A;//系统的总时间计数器记得必须初始化为0int flag_in[High];//九个楼层有无请求的标志哪个楼层如果有请求该标志置1int num;//等待队列中的人数记得要进行初始化为0int people;//电梯中人数int flag_out[High];}Lift;(2)算法设计顾名思义本程序在运行的过程中用到的算法便是—“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。

数据结构课程设计报告模板

数据结构课程设计报告模板

数据结构课程设计报告模板篇一:数据结构课程设计报告模板课程设计说明书课程名称:数据结构与算法专业:计算机科学与技术班级: 103013姓名:徐粤玲学号:03成绩:完成日期:XX年1 月 12日任务书摘要本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。

所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。

关键词:黑白棋编程设计s目录1.引言 ................................................ ................................................... .. (4)2.课题分析 ................................................ ................................................... (7)3.具体设计过程 ................................................ ....................................................8设计思路 ................................................ ...................................................8程序设计流程图 ................................................ (8)函数实现说明 ................................................ .. (12)4.程序运行结果 ................................................ ..................................................145.软件使用说明 ................................................ ..................................................186.结论 ................................................ ................................................... (21)参考文献 ................................................ ................................................... . (23)附录:源代码 ................................................................................................... .. 241.引言数据结构在计算机科学界至今没有标准的定义。

石大数据结构课程设计

石大数据结构课程设计

石大数据结构课程设计一、课程目标知识目标:1. 让学生掌握大数据结构的基本概念、原理及分类;2. 使学生了解常见大数据结构的应用场景及其优缺点;3. 引导学生掌握线性结构、非线性结构及它们的相关算法。

技能目标:1. 培养学生运用大数据结构解决实际问题的能力;2. 提高学生分析、设计和实现大数据结构算法的技能;3. 培养学生运用数据结构进行数据处理、分析和优化的能力。

情感态度价值观目标:1. 培养学生对大数据结构学科的兴趣和热情;2. 增强学生团队合作意识,培养良好的沟通与协作能力;3. 使学生认识到数据结构在信息技术领域的重要地位,增强社会责任感。

本课程针对石大数据结构课程,结合学生年级特点,注重理论与实践相结合,培养学生的知识运用能力和实际操作技能。

课程目标具体、可衡量,旨在使学生通过学习,能够熟练掌握大数据结构相关知识,为后续相关课程和实际工作打下坚实基础。

同时,课程强调情感态度价值观的培养,激发学生的学习兴趣,提高他们的综合素质。

二、教学内容1. 大数据结构基本概念:数据元素、数据项、数据结构类型;2. 线性结构:数组、链表、栈、队列、字符串;3. 非线性结构:树(二叉树、平衡树、堆)、图(有向图、无向图、最短路径算法、最小生成树算法);4. 常见大数据结构应用场景分析:搜索引擎、推荐系统、社交网络、云计算;5. 数据结构算法分析:时间复杂度、空间复杂度、算法优化;6. 大数据结构在实际应用中的优化策略:存储优化、查询优化、索引优化。

教学内容依据课程目标进行选择和组织,确保科学性和系统性。

教学大纲明确教学内容安排和进度,具体划分为以下六个方面:1. 基本概念与分类:第1章,1课时;2. 线性结构:第2-3章,4课时;3. 非线性结构:第4-5章,6课时;4. 常见应用场景分析:第6章,2课时;5. 算法分析:第7章,3课时;6. 优化策略:第8章,2课时。

教学内容与课本紧密关联,结合教学实际,旨在帮助学生系统掌握大数据结构知识体系,为实际应用打下坚实基础。

《数据结构》课程设计报告模板模

《数据结构》课程设计报告模板模

《数据结构》课程设计报告设计题目航班信息的查询与检索专业电子信息工程班级姓名学号完成日期2010-6-28目录1. 问题描述………………………………………………页码2. 系统设计………………………………………………页码3. 数据结构与算法描述…………………………………页码4. 测试结果与分析………………………………………页码5. 总结…………………………………………………页码6. 参考文献………………………………………………页码附录程序源代码…………………………………………页码航班信息的查询与检索1. 问题描述:这学期,我们在余先伦老师的带领下,大致学习了一下《数据结构》,实现了简单的数据结构算法。

现在,我们将完成简单的数据结构课程设计。

在数据结构的学习中我们知道,排序和查找是在数据结构中使用频率非常高。

为了能够快速有效地进行查询与检索,我们需要对记录按关键字进行排列。

选择《航班信息查询与检索》这个课题,主要是因为当今时代的需求。

随着科技与经济的发展,当今乘飞机的人越来越多,这时,快速的了解各类航班的班次、时间、价格及机型的信息将备受关注。

在我开发的这个《航班信息查询与检索》这个系统中,航班号将成为关键字,而且是具有结构特点的一类关键字。

通过关键字的键入,你将获得你所需要的航班的全部信息。

2. 系统设计2.1 设计目标:通过一定的数据结构,实现对信息的查询与检索并按要求输出。

试设计一个航空客运定票系统。

[基本要求]每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。

系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)《数据结构》课程设计报告一、课程设计的内容、要求1 线性表的另一种实现。

对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。

一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。

参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。

二、所采用的数据结构ADT List{数据对象: D = {a i|a i ∈ElemSet, i=1,2…n>=0}数据关系: R1={<a i-1, a i>|a i-1, a i∈D, i=1,2,…,n}基本操作:void IniList(SqList& L);void DestroyList(SqList& L);bool ListEmpty(SqList L);int ListLength(SqList L);void GetElem(SqList L, int i, Elem &e);bool PriorElem(SqList L, Elem cur_e, Elem &pre_e);bool NextElem(SqList L, Elem cur_e, Elem &next_e);void ListInsert(SqList &L, int i, Elem e);void ListDelete(SqList &L, int i);void ClearList(SqList& L);}三、主要模块(或函数)及其功能typedef struct LIST{ElemType *data;int size;int max_size;}LIST;void InitList(LIST *list)//初始化{list->data = (int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size = 0;list->max_size = INIT_SIZE;}void DestroyList(LIST &list){}bool NextElem(LIST list,int cur_e,int &next_e)//后继{if(cur_e < 0 || cur_e > list.size) return false;else{next_e = cur_e + 1;return true;}}void Insert(LIST *list,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}list->data[list->size] = value;list->size++;}void Insert_Back(LIST *list,int idx,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}if(idx>list->size){list->data[list->size] = value;}else{int i;for(i=list->size;i>idx;i--){list->data[i] = list->data[i-1];}list->data[idx] = value;}list->size++;}void ListDelete(LIST *list,int i,ElemType *e)//删除一个元素{int j;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}void Print_list(LIST *list){int i;if(list->size == 0){cout<<"当前线性表内没有元素。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

中国石油大学数据结构课程设计模板

中国石油大学数据结构课程设计模板

——数据结构(C语言)课程设计题目:可视化弗洛伊德最短路径班级:计算机12级成员:王朴,李元,包赫,李崇飞学号:2012011342 2012011337 2012011364 2012011369日期:2014年1月16日一.实习目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

二.问题描述设计、实现随机或手动建立一个有向图,可以使用弗洛伊德算法输出有向图中节点之间最短路径及权值,并把有向图和弗洛伊德算法得出的最短路径及最小权值可视化。

三.需求分析(1)可随机建立有向图,并在屏幕上使图可视化;(2)可手动建立有向图,添加节点、删除节点、移动节点、添加边、删除边、设置权值,并在屏幕上使图可视化;(3)对已建立的有向图实现弗洛伊德算法找出最短路径,并在屏幕上使最短路径及最小权值矩阵可视化;四.概要设计.系统中子程序及功能要求:数据对象V:一个集合,该集合中的所有元素具有相同的特性数据关系R:R={VR}VR={<x,y>|P(x,y)^(x,y属于V)}(1)OnButtonCreategraph()//随机建图按钮;(2)OnButtonHuman()//手动建图按钮;(3)OnButtonAddvertex()//添加节点按钮;(4)OnButtonDeletevertex()//删除节点按钮;(5)OnButtonMovevertex()//移动节点按钮;(6)OnButtonAddedge()//添加边按钮;(7)OnButtonDeleteedge()//删除边按钮;(8)OnButtonSetweight()//设置权值按钮;(9)OnButtonFloyd()//弗洛伊德算法按钮;(10) DrawDGRandom(TCenterPoint, pDC)//随机建图;(11) DrawDiGraph(CDC *pDC)//图可视化;(12) DrawVexs(CDC *pDC)//节点可视化;(13) DrawEdges(CDC *pDC)//边可视化;(14) InitHand()//存储节点;(15) CreateDGHand(CPoint centerpoint)//手动建图;(16) AddVertsHand()//添加节点;(17) DeleteVex(CPoint vPoint)//删除节点;(18) AddEdgesHand()//添加边;(19) DeleteEdge(CGraphVertex* pBeginVex, CGraphVertex* pEndVex)//删除边;(20) SetEdgeWeightHand ()//设置权值;(21) Floyd()//弗洛伊德算法;(22) DrawFloyd(CDC *pDC)//弗洛伊德可视化;各程序模块之间的调用关系(子程序编号见上):主函数可调用子程序 1、2、3、4、5、6、7、8、9子程序1可调用子程序10子程序2、3可调用子程序14、15子程序3可调用子程序16子程序4可调用子程序17子程序6可调用子程序18子程序7可调用子程序19子程序8可调用子程序20子程序9可调用子程序21子程序10可调用子程序11子程序16可调用子程序12子程序17可调用子程序12、19子程序18、19、20可调用子程序13子程序21可调用子程序22五.测试分析按照附录中的测试数据,得出如下测试、分析结果:1.建图功能:(1)随机建图:随机去顶节点的个数与位置及节点之间边的连接、方向与权值大小,并在屏幕上输出图结构;测试结果:可随机输出一有向图。

数据结构课程设计报告格式

数据结构课程设计报告格式

《数据结构》课程设计报告题目猴子选大王学生姓名学号专业班级指导老师设计日期 2009年12月19日指导老师评阅意见:一、问题定义1、课程设计目的:数据结构课程设计是学习数据结构课程的一个重要环节。

能巩固和加深课堂教学内容,提高学生实际工作能力,培养科学作风,为学习后续课程和今后的系统开发奠定基础。

通过课程设计,使学生熟练掌握数据结构课程中所学的理论知识,并实际应用,通过综合运用数据结构的基本知识来解决实际问题,加强学生分析和解决问题的能力。

2、课程设计的要求:本次课程设计要求学生正确理解课题,考虑问题要细致,全面,解决问题的方法要科学合理,切合实际。

并能上机实现。

3、课程设计的意义:1、有利于基础知识的理解。

学生对计算机运行的机理等知识内容的理解比较肤浅。

如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。

2、有利于逻辑思维的锻炼。

程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。

即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。

3、有利于治学态度的培养。

程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。

因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。

这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼猴子选大王任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

《数据结构》课程设计报告书参考模板

《数据结构》课程设计报告书参考模板

《数据结构》课程设计报告报告(论文)题目: 1.迷宫问题2.哈夫曼编码作者所在系部:计算机科学与工程系作者所在专业:网络工程作者所在班级: B08522作者姓名:马洪彪作者学号: 20084052227指导教师姓名:贾振华完成时间: 2009年12月31日北华航天工业学院教务处制课程设计任务书摘要本次课设目的在于检验学生在《数据结构》课程一学期中的学习成果,从而加深学生对所学知识的进一步理解与巩固。

本次课程设计过程中我主要根据课本中的实现思想及算法编写程序,体现以课本知识的应用为主,在学习了线性表、栈、队列、二叉树、树和图等结构的基础上,以能够更加熟练的应用所学知识,并能结合一些著名算法来实现对一些实际问题的应用,例如,哈夫曼树等,从而更为深刻理解数据结构的内涵,熟悉它们各自的应用场合及方法。

有些在平时课程中并没有掌握的内容在这次课程设计中都是先通过看课本学懂了,然后再在课程设计中加深印象,实现算法的应用和扩展。

这次课程设计的设计内容主要是通过实际的例子和程序来实现课本中所学习的算法的应用。

我主要做了迷宫问题、哈夫曼编码/译码实现两个题目。

本文利用C++语言编写程序,分别实现了对自定义的迷宫有无路径的判定和发送端对待传送数据的编码和接收端对传送来的数据的译码。

其中,迷宫问题以栈的应用为基础,随机生成迷宫,然后寻找所以路径并输出,对没有路径的迷宫,继续随机生成,直到生成存在路径的迷宫。

哈夫曼编译系统分为五个功能模块:原始数据载入,打印编码规则、编码、译码。

以二叉树的应用为基础,包括统计信息,并通过构建哈夫曼树、对信息进行哈夫曼编码,将编码信息等存入文档。

两个系统均已经过全面的测试,能够很好的运行,达到了预期的效果。

关键词:数据结构栈和队列二叉树哈夫曼编码迷宫目录《数据结构》课程设计报告书 (1)第1章绪论 (1)1.1 课程设计选题的目的 (1)1.2 课程设计选题的背景和意义 (1)1.2.1课程设计选题的背景 (1)1.2.2课程设计选题的意义 (1)1.3 课题研究的主要内容 (2)第2章需求分析 (3)2.1 输入/输出形式和输出值的范围 (3)2.2 程序功能 (3)2.3 测试数据 (3)2.3.1正确的输入及输出结果 (3)2.3.2 错误的输入及输出结果 (5)第3章概要设计 (6)3.1 设计思想 (6)3.2 函数间的关系 (6)第4章详细设计 (7)4.1 迷宫的主要结构 (7)4.2 哈夫曼的主要结构 (8)第5章调试分析 (11)5.1 问题描述 (11)5.2解决方案 (11)5.3 对设计实现的回顾讨论和分析 (11)5.4 对算法的分析和改进设想 (11)5.5 经验和体会 (11)第6章测试并列出测试结果 (12)6.1 迷宫问题测试结果 (12)6.2 哈夫曼系统测试结果 (12)第7章总结 (16)7.1 设计体会 (16)7.1.1 系统的优点 (16)7.2 结束语 (16)致谢 (17)参考文献 (18)附录 (19)《数据结构》课程设计报告书第1章绪论随着信息产业的飞速发展,信息化管理及查询已经引入并应用到各行业管理领域,各种形式的百货商场、大型仓储超市、便利店、连锁超市和专卖店等形式的零售业鳞次栉比,不断改变、影响着人们的价值观念和生活方式。

数据结构课程设计报告撰写模板(参考)

数据结构课程设计报告撰写模板(参考)

数据结构课程设计报告撰写模板(参考)目录1需求分析 (3)1.1 输入的形式和输入值的范围....................................1.2 输出的形式................................................1.3 程序所能达到的功能........................................1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果..............................................................2概要设计 (4)3详细设计 (5)3.1 姓名(结构体数组)初始化………………………………………………………………………………3.2 建立哈希表……………………………………………………………………………………………………….3.2.1 用除留余数法构建哈希函数………………………………………………………………………………..3.2.2 用伪随机探测再散列法处理冲突……………………………………………………………………….4调试分析 (11)5用户使用说明 (12)6测试结果 (13)7参考文献 (14)1需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:1.1 输入的形式和输入值的范围;1.2 输出的形式;1.3 程序所能达到的功能;1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2概要设计(系统概要、基本功能要求)说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

存储结构设计typedef struct{ char *py; //名字的拼音int k; //拼音所对应的整数}NAME;typedef struct //哈希表{ char *py; //名字的拼音int k; //拼音所对应的整数int si; //查找长度}HASH;3详细设计(列出函数首部+注释)例如:void show(listlink head) /*显示所有的信息*/实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图 N – S 图或PAD图进行描述,画出函数和过程的调用关系图。

石大远程在线考试——《数据结构课程设计》_85201441854054813

石大远程在线考试——《数据结构课程设计》_85201441854054813

中国石油大学(北京)远程教育学院期末考试《数据结构》课程设计1.课程设计题目从下面四个题目中任选一题完成。

1.1 通讯录的制作用单链表作为数据结构,结合C或者C++语言基本知识,编写一个班级的通讯录管理系统。

系统包括下面几方面的功能:第1:输入信息:输入某同学的信息;第2:显示信息:显示全部通讯录中学生的信息;第3:查找功能:实现按姓名进行查找,并给出查找信息;第4:删除功能:实现按姓名进行删除,并给出操作结果;第5:每名同学的信息包括:姓名、性别、电话、城市;第6:界面友好,每步给出适当的操作提示;第7:系统具有一定的容错能力。

1.2 图书管理系统设计一个计算机管理系统完成图书管理几本业务。

系统要满足下面基本要求:第1:每种图书的登记内容包括:书名、书号、作者、出版社、现存量和库存量;第2:采编入库:新购图书,确定书号后,登记到图书账目表中,如果表中存在该书,则只将库存量增加;第3:借阅:如果该书的库存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变库存量;第4:归还:注销对借阅者的登记,改变该书的库存量;第5:界面友好,每步给出适当的操作提示;第6:系统具有一定的容错能力。

1.3 产品进销管理系统针对某个行业的库房产品进销存情况进行管理,系统要求具有下列功能:第1:采用一定的存储结构对库房的货品及其数量进行分类管理;第2:可以进行产品类的添加、产品的添加、产品数量的添加;第3:能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;第4:每种产品至少包含信息:产品名、进货日期、进货数量、销出数量、销售时间、库存量;第5:界面友好,每步给出适当的操作提示;第6:系统具有一定的容错能力。

1.4 校园导航问题设计中国石油大学(北京)的校园平面图,至少包括10个场所,可以实现任意两个场所的最短路径。

2.课程设计报告书写规范课程设计报告包括该题目的需求分析、概要设计、详细设计、程序测试、感想与体会几部分内容。

数据结构课程设计报告

数据结构课程设计报告

数据结构课程设计报告学生姓名李娜学号*********班级地信10901长江大学2011.6目录1.需求分析 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)1.3课程设计步骤 (4)1.4课程设计要求 (4)2.逻辑设计 (5)2.1运行环境 (5)2.2系统流程图 (5)3.详细设计 (11)4.调试过程 (22)4.1调试过程中出现的问题和处理方式 (22)4.2调试分析 (23)4.3调试结果 (23)4.总结 (26)5.附录(源代码) (27)1.需求分析:1.1课程设计目的《数据结构》主要介绍一些常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

数据结构课程设计是为数据结构课程独立开设的实践性教学环节。

数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。

课程设计的目的:1.要求学生达到熟练掌握C语言的基本知识和技能。

2.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。

3.提高程序设计和调试能力。

通过上级机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

4.培养算法分析能力。

分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

5.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

1.2课程设计内容(1)线性链表基本操作的实现问题描述:线性链表的插入、删除、遍历等操作的实现。

基本要求:要求生成线性表时,可以键盘上读取元素输出形式:有中文提示,链表元素为整形。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,完成相关的功能要求。

数据结构课程设计报告格式2

数据结构课程设计报告格式2

课程设计报告格式:
1、设计目的
2、总体设计(程序设计组成框图、流程图)
3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5、源程序清单和执行结果:清单中应有足够的注释
检查要求:
1、每个人必须有可运行的程序(做完检查);
2、每个人必须交《数据结构课程设计报告》(手写稿)
打分标准:
1、根据平时上机考勤;注重平时上机成绩,不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。

2、根据程序运行结果,学生能对自己的程序面对教师提问并能熟练地解释清楚。

3、根据《数据结构课程设计报告》,以上三项缺一不可,否则不能到得相应学分。

1. 目的:
(1)要求熟练掌握C语言的基本知识和编程技能;
(2)掌握数据结构设计的基本思路和方法;
2. 要求
基本要求:
(1)设计最短路径,包含以下方面:
1、用邻接矩阵存储一张带权有向图。

2、对图进行从某一源点到其他各顶点的最短路径
3、输出最后结果(路径名称、路径长度)。

三、信息描述
邻接矩阵建立包括:用二维数组存储信息。

没有直达路径的为无穷。

用循环来判断最小值。

最终结果用一维数组存储。

输出一维数组,显示最终结果。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告《数据结构》课程设计报告如下:一、课程设计分析在学习了数据结构课本理论知识后,为了检验自己所学知识的牢固性巩固大家的理论知识,调动大家的编程兴趣;同时为大家提供一个实践自己,检验自己的平台,以增加大家对将来工作的适应能力;也为了锻炼大家的动手实践能力,遂在学期末进行了本次课程设计。

“数据结构”在计算机科学中是一门综合性的专业基础课。

“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。

在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。

因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。

在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。

我们本着自己的兴趣及挑战自己的态度,也为检验我们理论知识的熟练度,锻炼我们动手实践能力,我们选择了小型图书管理系统的编写。

因为我们生活在大学,图书馆是我们学习的天堂,借书和还书又是必不可少的,一个好的图书管理系统对于我们学生和管理人员都会为大家提供很多便利。

本着挑战和创新的思想,我们进行了此次课程设计程序编写及报告撰写。

二、课程设计基本理论运用所学的数据结构相关内容,设计一个小型图书馆管理系统,我们将运用到的原理有:链表的操作,包括插入,删除等;还有数据的排序;文件的操作等;遍历查找,插入排序等原理。

也运用了c语言的基本图形界面,使用户使用界面更加人性化,更加美观。

数据结构的创建是本课程设计的一个重要内容,我们这里使用的是单链表的数据结构,结合c语言语言特点、实际的图书馆管理系统的基本操作实现了一个简单的图书管理系统的正常运行,实现一些简单的功能。

三、课程算法设计通过对图书管理系统内的图书进行添加和删除操作,实现同学借书和还书的记录工作,通过对图书的查找和按指定方式排序,更有利于同学们挑选自己所需要的图书,借阅借书所需时间。

《数据结构》课程设计报告-建立通信网络-双号

《数据结构》课程设计报告-建立通信网络-双号

中国石油大学(北京)远程教育学院《数据结构》课程设计报告第一题任意长整数加减法运算课程设计题目任意长的整数加减法运算1需求分析设计算法,实现一个任意长的整数进行加法、减法运算的演示程序。

例如:1234,5123,4512,3451,2345与-1111,1111,1111,1111,1111的加法结果为:0123,4012,3401,2340,1234。

基本要求如下:(1)利用链表实现长整数的存储,每个节点含一个整型变量;(2)整型变量的范围:-(2^15 -1)~(2^15 -1);(3)输入与输出形式每四位一组,组间用逗号分隔开。

如:1986,8213,1935,2736,3299;(4)界面友好,每步给出适当的操作提示,并且系统具有一定的容错能力。

至少给出下面的测试数据:(1)0;0(2)-2345,6789;-7654,3211(3)-9999,9999;1,0000,0000,0000(4)1,0001,0001;-1,0001,0001(5)1,0001,0001;-1,0001,0000(6)-9999,9999,9999;-9999,9999,9999(7)1,0000,9999,9999; 12概要设计注意这里是整数,浮点数需要额外的操作,实现大整数的加减,三个栈就OK了,两个运算整数栈,一个结果栈,基本的逻辑的就是利用栈的先入后出的特点将高位push到栈底,低位push到栈顶,之后两个栈pop出来之后push到结果栈,结果栈pop出来就是我们想要的结果。

typedef char ElemType;typedef struct{ElemType *base;ElemType *top;int stacksize;}sqStack;void initStack(sqStack *s)void Push(sqStack *s, ElemType e)void Pop(sqStack *s , ElemType *e)int StackLen(sqStack s)void ADD(sqStack *s1,sqStack *s2,sqStack *s3)3详细设计1. 主函数设计int main(){char e;sqStack s1,s2,s3;initStack(&s1); /*初始化堆栈s1,存放加数*/initStack(&s2); /*初始化堆栈s2,存放加数*/initStack(&s3); /*初始化堆栈s3,存放结果*/printf("江紫花090451\n"); /*输入第一个任意长整数,按”#”结尾*/printf("Please input the first integer\n"); /*输入第一个任意长整数,按”#”结尾*/scanf("%c",&e);while(e!='#'){Push(&s1,e); /*将加数(字符串)入栈s1*/scanf("%c",&e);}getchar(); /*接收回车符*/printf("Please input the second integer\n"); /*输入第二个任意长整数,按”#”结尾*/scanf("%c",&e);while(e!='#'){Push(&s2,e); /*将加数(字符串)入栈s2*/scanf("%c",&e);}ADD(&s1,&s2,&s3); /*加法运算,将结果存放在s3中*/printf("The result is\n");while(StackLen(s3)!=0) /*输出结果,打印在屏幕上*/{Pop(&s3,&e);printf("%c",e);}void initStack(sqStack *s){/*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));if(!s->base) exit(0); /*分配空间失败*/s->top = s->base; /*最开始,栈顶就是栈底*/s->stacksize = STACK_INIT_SIZE; /*最大容量为STACK_INIT_SIZE */ }/*入栈操作,将e压入栈中*/void Push(sqStack *s, ElemType e){if(s->top - s->base >= s->stacksize){/*栈满,追加空间*/s->base = (ElemType *)realloc(s->base, (s->stacksize +STACKINCREMENT)*sizeof(ElemType));if(!s->base) exit(0); /*存储分配失败*/s->top = s->base + s->stacksize;s->stacksize = s->stacksize + STACKINCREMENT; /*设置栈的最大容量*/}*(s->top) = e; /*放入数据*/s->top++;}/*出栈操作,用e将栈顶元素返回*/void Pop(sqStack *s , ElemType *e){if(s->top == s->base) return;*e = *--(s->top);}/*计算堆栈s当前的长度*/int StackLen(sqStack s){return (s.top - s.base) ;}void ADD(sqStack *s1,sqStack *s2,sqStack *s3){char a1,a2,a3,c=0; /*a1,a2分别存放从堆栈s1,s2中取出的(数据)元素,a3=a1+a2,c中存放进位*/while(StackLen(*s1)!=0 && StackLen(*s2)!=0){Pop(s1,&a1); /*取出s1栈的栈顶元素给a1*/Pop(s2,&a2); /*取出s2栈的栈顶元素给a2*/a3 = (a1-48) + (a2-48) + c + 48; /*相加*/if(a3>'9'){a3 = a3 - '9' + 47; /*产生进位的情况*/c = 1;}elsec = 0; /*不产生进位*/Push(s3,a3); /*将结果入栈s3*/}if(StackLen(*s1)!=0) /*栈s1不为空的情况*/{while(StackLen(*s1)!=0){Pop(s1,&a1); /*取出s1栈的栈顶元素给a1*/a3 = a1 + c ; /*与进位标志c相加*/if(a3>'9'){a3 = a3 - '9' + 47; /*产生进位的情况*/c = 1;}elsec = 0; /*不产生进位*/Push(s3,a3); /*将结果入栈s3*/}}else if(StackLen(*s2)!=0) /*栈s1不为空的情况*/{while(StackLen(*s2)!=0){Pop(s2,&a2); /*取出s1栈的栈顶元素给a1*/a3 = a2 + c; /*与进位标志c相加*/if(a3>'9'){a3 = a3 - '9' + 47; /*产生进位的情况*/c = 1;}elsec = 0; /*不产生进位*/Push(s3,a3); /*栈s1不为空的情况*/}}if(c==1)Push(s3,'1'); /*如果最后有进位,将字符’1’入栈s3*/ }4程序测试(1)0;0(2)-2345,6789;-7654,3211(3)-9999,9999;1,0000,0000,0000(4)1,0001,0001;-1,0001,0001(5)1,0001,0001;-1,0001,0000(6)-9999,9999,9999;-9999,9999,9999(7)1,0000,9999,9999; 15感想与体会这是一门纯属于设计的科目,它需用把理论变为上机调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国石油大学(北京)远程教育学院《数据结构》课程设计报告课程设计题目学生姓名学号专业班级2019 年月题目要求:设计一个稀疏矩阵计算器,实现两个稀疏矩阵的加法、减法、乘法以及矩阵的转置运算。

采用菜单为应用程序的界面,用户通过对菜单进行选择,分别实现矩阵的相加、相减、相乘以及矩阵转速运算。

1需求分析1. 稀疏矩阵是指稀疏因子小于等于0.5的矩阵。

利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。

实现一个能进行稀疏矩阵基本运算的运算器。

2. 以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现矩阵转置,以及两个矩阵的加、减、乘的运算。

稀疏矩阵的输入形式采用三元组表示,运算结果以阵列形式列出。

3. 演示程序以用户和计算机的对话方式进行,数组的建立方式为边输入边建立。

首先输入矩阵的行数和列数,并判别给出的两个矩阵的行列数是否与所要求的运算相匹配。

4. 程序可以对三元组的输入属性不加以限制;根据对矩阵的行列,三元组作之间插入排序,从而进行运算时,不会产生错误。

5. 在用三元组表示稀疏矩阵时,相加、相减和相乘所产生的结果矩阵另外生成。

6. 运行环境:VC6.0++。

2概要设计稀疏矩阵元素用三元组表示:typedef struct{int i; //非零元的行下标int j; //非零元的列下标int e; //矩阵非零元}Triple;稀疏矩阵采用三元组顺序表存储:#define MSXSIZE 12500 //假设非零元个数的最大值为200#define MAXRC 10 //假定矩阵的最大行数为10typedef struct{int mu ; //矩阵的行数int nu ; //矩阵的列数int tu ; //矩阵的非零元素个数Triple data[MAXSIZE+1]; //非零元三元组表,data[0]没有用int rpos[MAXRC+1]; //各行第一个非零元素的位置表}Tabletype;系统主要函数及功能如下:Menu( ):主控菜单,接收用户的选项;Input_Matrix( ):输入矩阵;Print_matrix( ):输出矩阵;Cal_matrix( ):计算矩阵每行第一个非零元在三元组中的位序号;TransposeMatrix( ):矩阵转置;Add_Matrix( ):矩阵加法运算;Sub_Matrix( ):矩阵减法运算;Multi_Matrix( ):矩阵乘法运算。

模块的调用关系如图1所示。

图1 程序调用模块示意图3详细设计1. 主函数设计//*****************************************//* 矩阵运算主函数*//*****************************************主函数中,实现用户菜单菜单的打印,并根据用户的选项执行相应的功能,主函数力求简洁、清晰。

void main( ){num=Menu(); //打印主菜单while(num){switch(num){case 1:Multi_Matrix(); //矩阵相乘break;case 2:TransposeMatrix(); //矩阵转置break;case 3:Add_Matrix(); //矩阵加法break;case 4:Sub_Matrix(); //矩阵减法case 0:break;}//switchnum=Menu();}//while}2. 主菜单设计主控菜单是用来输出提示信息和处理输入,此函数返回用户的选项,提供给main函数中的switch语句。

对于不符合要求的选项,提示输入错误并要求用户重新输入。

将此函数与main函数合在一起,编译运行程序,即可检查并验证菜单选项是否正确。

主菜单如下://*****************************************//* 打印主控菜单函数*//*****************************************int menu( ){printf("\n 主菜单");printf("\n*********************");printf("\n 1. 矩阵乘法");printf("\n 2. 矩阵转置");printf("\n 3. 矩阵加法");printf("\n 4. 矩阵减法");printf("\n 0. 退出");printf("\n*********************");scanf("%d",&num);while(num<0||num>4) //输入非法,重新输入scanf("%d",&num);return num;}3. 矩阵乘法运算函数//*****************************************//* 矩阵乘法运算算法*//*****************************************Status Multi_Matrix(){Input_Matrix(&a); //输入矩阵aInput_Matrix(&b); //输入矩阵bCal_matrix(&a); //计算矩阵a每行第一个非零元的位序号Cal_matrix(&b); //计算矩阵b每行第一个非零元的位序号if (a.nu!=b.mu) //不符合矩阵乘法条件,不能相乘return ERROR;c.mu=a.mu; //对矩阵c初始化c.nu=b.nu;c.tu=0;if(a.tu*b.tu!=0){for(arow=1;arow<=a.mu;arow++){ /*处理矩阵a的每一行*/for (p=1;p< MAXRC+1;p++) /*当前行各元素累加器清零*/ctemp[p]=0;c.rpos[arow]=c.tu+1;if(arow<a.mu )tp=a.rpos [arow+1];elsetp=a.tu +1;for(p=a.rpos[arow]; p<tp;p++){ //求得c中第crow行的非零元brow=a.data[p].j;if(brow<b.nu)t=b.rpos[brow+1];elset=b.tu+1;for (q=b.rpos[brow];q<t;q++){ccol=b.data[q].j; /*乘积元素在矩阵c中的列号*/ctemp[ccol]+=a.data[p].e*b.data[q].e;} /*for q*/}//for pfor(ccol=1;ccol<=c.nu;ccol++)if(ctemp[ccol]) /*压缩存储该行非零元*/{if((c.tu)>MAXSIZE)exit(1);c.tu++;c.data[c.tu].i=arow;c.data[c.tu].j=ccol;c.data[c.tu].e=ctemp[ccol];}/*end if*/}/*for arrow*/}/*if*/Print_matrix(a);Print_matrix(b);Print_matrix(c);}4. 矩阵转置算法//*****************************************//* 矩阵转置算法*//*****************************************void TransposeMatrix(){Input_Matrix(&a); //输入矩阵ab.mu=a.nu;b.nu=a.mu;b.tu=a.tu;if(b.tu){q=1; /*b.data的下标*/for(col=1;col<=a.nu;col++) //对a的每一列for(p=1;p<=a.tu;p++) /*p为a的下标*/if( a.data[p].j==col){ //寻找矩阵a中列为col的非零元b.data[q].i=a.data[p].j;b.data[q].j=a.data[p].i;b.data[q].e=a.data[p].e;q++;}//if(p)}//if(b.tu)Print_matrix(b); //输出a的转置矩阵}5. 矩阵加法算法//*****************************************//* 矩阵加法运算函数*//* c=a+b *//*****************************************Status Add_Matrix(){Input_Matrix(&a); //输入矩阵aInput_Matrix(&b); //输入矩阵bif(a.mu !=b.mu ||a.nu !=b.nu ) //不满足矩阵加法条件return ERROR;c.mu =a.mu ;c.nu =a.nu ;ta=1; tb=1; tc=1;if(a.tu *b.tu !=0){while((ta<=a.tu) && (tb<=b.tu)){if(a.data[ta].i==b.data[tb].i){if(a.data[ta].j==b.data[tb].j){temp=a.data[ta].e+b.data[tb].e;if(temp!=0){c.data[tc].i=a.data[ta].i;c.data[tc].j=a.data[ta].j;c.data[tc].e=temp;tc++;}//end if (temp)ta++; tb++;}//end ifelse{if(a.data[ta].j<b.data[tb].j){c.data[tc].i=a.data[ta].i;c.data[tc].j=a.data[ta].j;c.data[tc].e=a.data[ta].e;ta++; tc++;}//end of else ifelse{c.data[tc].i=b.data[tb].i;c.data[tc].j=b.data[tb].j;c.data[tc].e=b.data[tb].e;tb++; tc++;}//}}//end ifelse{if(a.data[ta].i<b.data[tb].i){c.data[tc].i=a.data[ta].i;c.data[tc].j=a.data[ta].j;c.data[tc].e=a.data[ta].e;tc++; ta++;}else{c.data[tc].i=b.data[tb].i;c.data[tc].j=b.data[tb].j;c.data[tc].e=b.data[tb].e;tc++; tb++;}}}//whilewhile(ta<=a.tu){ //处理a中剩余非零元c.data[tc].i=a.data[ta].i;c.data[tc].j=a.data[ta].j;c.data[tc].e=a.data[ta].e;tc++; ta++;}while(tb<=b.tu){ //处理b中剩余非零元c.data[tc].i=b.data[tb].i;c.data[tc].j=b.data[tb].j;c.data[tc].e=b.data[tb].e;tc++; tb++;}}//c.tu=tc;Print_matrix(c);}6. 矩阵输入算法用于输入矩阵的行数、列数、非零元个数,以及每个非零元素。

相关文档
最新文档