东华大学数据结构课程设计报告书
- 格式:doc
- 大小:186.00 KB
- 文档页数:9
东华大学信息科学与技术学院实验报告实验名称:线性表的基本操作指导教师:学生姓名:学生学号:实验日期:2012/11一、实验目的1、熟悉C或VC++语言上机环境。
2、会定义线性表的顺序存储结构和链式存储结构。
3、熟悉顺序表和单链表的一些基本操作和应用。
4、加深对线性表的理解,逐步培养解决实际问题的编程能力。
二、实验环境运行C或VC++的微机。
三、实验内容:分别使用顺序表和单链表存储结构实现以下操作:1.建立线性表L={12,13,21,24,28,31,42,77};2.在第5个元素之前插入26;3.删除第5个元素28;4.查找28。
四、实验设计思路及算法流程(一)使用顺序表实现操作:建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出、查找元素、判线性表是否为空;问题分析:利用顺序表,设计一组输入数据,能够对顺序表进行如下操作:创建一个新的顺序表,实现动态空间分配的初始化;已给定的值插入到指定位置和删除指定位置的值,形成有序顺序表;按值查找,根据给定数据元素的值,查找该元素的位置,对查找结果进行返回;实现顺序表的各个元素的输出;“初始化算法”的操作结果:构造一个空的顺序线性表,对顺序表的空间进行动态管理,实现动态分配、回收和增加存储空间;“位置插入算法”的初始条件:顺序线性表L已存在,给定的元素位置为i,且1≤i≤ListLength(L)+1 ;其操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1;“位置删除算法”的初始条件:顺序线性表L已存在,1≤i≤ListLength(L) ;其操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 ;“输出算法”的初始条件:顺序线性表L已存在;其操作结果:依次对L的每个数据元素进行输出;“按值查找算法”初始条件:顺序线性表L已存在,元素值为e;其操作结果:返回L 中数据元素值为e的元素位置;线性表的顺序存储结构的定义及其基本操作的参考程序(顺序表)文件一:pubuse. h 是公共使用的常量定义和系统函数调用声明。
数据结构课程设计报告课程设计报告课程设计题目:链表的创立、插入、删除、修改学生姓名专业计算机科学与技术班级学号指导教师艾9月 30日一、实验题目:实现链表的创立、插入、删除和修改任务:实现链表的创立、插入、删除、修改和输出要求:建立一个简单的人机对话,创立、插入、删除、修改和输出功能能够根据需要选择使用。
二、实验时间、地点:-12-26~ -12-30、信工楼302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。
四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常见算法中的应用。
5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其它的题目,当然在完成自己的题目之后根据个人兴趣能够继续选做其它的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,她的特点是用一组任意的存储单元(能够是连续的,也能够是不连续的)存放数据元素。
链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。
Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。
能够看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。
数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。
二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。
在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。
三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。
2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。
3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。
4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。
5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。
四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。
2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。
通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。
3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。
链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。
在实现链表时,我们定义了一个节点结构,包含数据域和指针域。
通过指针的方式将节点连接起来,形成一个链式结构。
同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。
4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。
《数据结构与算法设计》课程设计报告题目:哈夫曼树及其应用学生姓名:刘信宏学号: ************班级: 1121808指导教师:**2013年1 月11 日数据结构课程设计任务书使用班级:1121805-8/1121813-16/1121821-22使用时间:2012-2013学年第1学期一、课程设计目的本课程设计的目的考察学生对常见数据结构及相关算法的综合应用能力,达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,解决实际问题中数据的合理存储表示,并根据相应的存储结构设计效率较高的算法实现对问题的求解;通过此次课程设计进一步培养学生良好的程序设计技巧和分析问题解决问题的能力。
二、课程设计题目哈夫曼树及其应用设计目的:熟悉树的各种存储结构及其特点。
掌握建立哈夫曼树和哈夫曼编码的方法及带权路径长度的计算。
设计内容:欲发一封内容为AABBCAB ……(共长100 字符,其中:A 、B 、C 、D 、E 、F分别有7 、9 、12 、22 、23、27个)的电报报文,实现哈夫曼编码和译码。
设计要求:分析系统需求。
建立哈夫曼树。
进行哈夫曼编码,并求出平均编码长度。
译码。
对编码好的内容进行译码。
三、课程设计要求:1、每人一题,且需独立完成。
2、每人的设计程序必须为可执行的exe文件,且需指导教师验收合格。
学生程序必须在课程设计的最后一天交由指导教师验收合格。
过期不再验收程序,如程序验收不合格或在规定时间内未经指导教师验收,则视为该生程序没有完成。
3、每人必须在规定时间内到机房做程序,指导老师将严格考勤,上机期间严禁做与课程设计无关的事情。
指导教师将随时抽查。
4、每人必须撰写课程设计报告并上交纸质稿(格式附后)。
5、上交材料包括课程设计报告电子稿和程序代码电子稿(每位同学先建立一个文件夹,取名规则为“学号姓名”,文件夹里存放上交电子内容,分别是“学号+姓名+报告”和“学号+姓名+程序”,每班取一文件夹名,取名规则为班级号,内放该班同学上交内容,每班学习委员统一收齐后拷贝给指导老师。
数据结构课程设计论文题目:基于线性表下的查找与排序姓名:赖德发学院:理学院专业:信息与计算科学班级:1123202学号:2011203202022014年1月17日一、实验环境(1)硬件:学生每人一台计算机。
(2)软件:Windows操作系统,Visual C++6.0。
二、实验内容基于线性表下的查找与排序。
三、实验原理1.基于线性表的查找法概述集合结构是数据对象之间关系松散的一种数据结构,对其进行查找是根据给定的关键字,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。
查找的方法分为比较式查找法和计算式查找法,其中比较式查找法可分为基于线性表的查找法和基于树的查找法;而计算式查找法也称为Hash(哈希)查找法。
基于线性表的查找法是将集合的数据对象组织成为线性表形式进行查找,即用给定的关键字与线性表中各元素的关键字逐个比较,直到成功或失败。
线性表的存储结构通常是顺序存储结构,也可使用链式存储结构。
查找时可在表的一端设置一个“监视哨”,存放要查找元素的关键字,从表的另一端开始查找,若在“监视哨”找到要查找元素的关键字,返回失败信息,否则返回关键字的位序。
基于线性表的查找技术有着非常广泛的应用。
2.基于线性表的排序法概述排序是计算机程序设计中的一种重要操作,在数值计算或数据处理过程中,都会直接或间接用到数据的排序问题。
排序的功能是将一个数据元素(或称记录)的无序序列,按数据元素的关键字大小排列成一个递增或递减有序的记录序列。
由于待排序的记录数量不同,使得排序过程中涉及的存储器也不同,因此可将排序方法分为内排序和外排序。
内排序包括插入、交换、选择和归并等几类排序。
2.1基于插入类的排序概述插入类排序的基本思想是假定记录序列中前面的一部分记录已经有序,把后面的一个记录插入已排序的有序子序列中去,使得插入这个记录后得到的依然是有序序列,从而逐步扩大有序的子序列的长度,直到所有记录都有序为止。
《数据结构》课程设计报告设计题目航班信息的查询与检索专业电子信息工程班级姓名学号完成日期2010-6-28目录1. 问题描述………………………………………………页码2. 系统设计………………………………………………页码3. 数据结构与算法描述…………………………………页码4. 测试结果与分析………………………………………页码5. 总结…………………………………………………页码6. 参考文献………………………………………………页码附录程序源代码…………………………………………页码航班信息的查询与检索1. 问题描述:这学期,我们在余先伦老师的带领下,大致学习了一下《数据结构》,实现了简单的数据结构算法。
现在,我们将完成简单的数据结构课程设计。
在数据结构的学习中我们知道,排序和查找是在数据结构中使用频率非常高。
为了能够快速有效地进行查询与检索,我们需要对记录按关键字进行排列。
选择《航班信息查询与检索》这个课题,主要是因为当今时代的需求。
随着科技与经济的发展,当今乘飞机的人越来越多,这时,快速的了解各类航班的班次、时间、价格及机型的信息将备受关注。
在我开发的这个《航班信息查询与检索》这个系统中,航班号将成为关键字,而且是具有结构特点的一类关键字。
通过关键字的键入,你将获得你所需要的航班的全部信息。
2. 系统设计2.1 设计目标:通过一定的数据结构,实现对信息的查询与检索并按要求输出。
试设计一个航空客运定票系统。
[基本要求]每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
《数据结构》课程设计任务书结构设计一、设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
二、设计要求1、通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
2、学生必须仔细研读《数据结构》课程设计(实习)要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。
3、本次课程设计按照教学要求需要在2周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时地向指导教师汇报。
4、编程语言任选。
三、设计选题选题说明:本次任务共提供若干个不同难易程度的题目,其中前面5个为必做题,满分100分(系统功能完善、人机交互界面简单、直观、便捷,否则逐项减分);后面为选做题,题目难度层度不等,完成部分选做题目者可以适当给予加分;同学们在选题时,要结合个人实际情况,确保及格,力争多做。
1、单位员工通讯录管理系统(线性表的应用)[问题描述]为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[实现提示]可以采用单链表的存储结构,如可定义如下的存储结构:typedef struct { /*员工通讯信息的结构类型定义*/ char num[5]; /*员工编号*/char name[10]; /*员工姓名*/char phone[15]; /*办公室电话号码*/ char call[15]; /*手机号码*/char mail[25]; /*邮箱*/}DataType;/*通讯录单链表的结点类型*/typedef struct node{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode,*LinkList;typedef struct { /*员工通讯信息的结构类型定义*/ char num[5]; /*员工编号*/char name[10]; /*员工姓名*/char phone[15]; /*办公室电话号码*/char call[15]; /*手机号码*/char mail[25]; /*邮箱*/}DataType;/*通讯录单链表的结点类型*/typedef struct node{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode,*LinkList;#include"iostream"using namespace std;struct contaxt{char name[10];char sex[5];char Adrre[50];char Class[20];char Mobi[20];char qq[10];struct contaxt *next;};//声明函数typedef struct contaxt CONT;CONT *InsertCon(CONT *head);////插入联系人的基本信息CONT *AddContaxt(int n); ////初始化联系人的基本信息CONT *FindCon(CONT *head); ////查找联系人的基本信息CONT *AmendMessage(CONT *head);//修改联系人的基本信息CONT *DeleteMessage(CONT *head);//删除联系人的基本信息void showmessage(CONT *head); ////显示联系人的基本信息int menu(CONT *head); //主菜单CONT *saveFileCONT(CONT *head );//保存联系人的基本信息CONT *readFileCONT(CONT *head);//读取联系人的基本信息int choose;//系统入口void main(){CONT *head;head = NULL;menu(head);}//系统主菜单int menu(CONT *head){cout << "请选择操作菜单!!!" << endl ;do{cout << "---------------------------欢迎进入员工管理系统-------------------------------"<< "---------------------------------操作菜单---------------------------------------";cout <<"--------------------------------------------------------------------------------"<< "************************1 添加联系人信息************************" <<endl<< "************************2 插入联系人信息************************ " << endl<< "************************3 查找联系人信息************************ " <<endl<< "************************4 修改联系人信息************************" << endl<< "************************5 删除联系人信息************************" << endl<< "************************6 显示联系人信息************************" << endl<< "************************7 退出本系统************************" << endl<< "************************8 保存文件************************ " << endl<< "************************9 读取文件************************" << endl<<"--------------------------------------------------------------------------" << endl;cout << "请选择操作菜单!!!" << endl ;int choose;//choose = getchar();fflush(stdin);//return choose;************************cin >> choose;if(choose != 1&& choose != 2 && choose != 3 && choose !=4 && choose != 5 && choose !=6 && choose !=7&&choose != 8){cout << "输入错误:"<<endl;}else{switch(choose){case 1:int n;do{fflush(stdin);cout << "请确定要添加几个联系人:";cin >> n;}while(n <= 0);head = AddContaxt(n);break;case 2:system("CLS");head = InsertCon(head);break;case 3:head = FindCon(head);break;case 6:system("CLS");showmessage(head);break;case 7:exit(0);break;case 4:system("CLS");AmendMessage(head);break;case 5:system("CLS");DeleteMessage(head);break;case 8:system("CLS");head = saveFileCONT(head );break;case 9:// head = readFileCONT(head);default:system("CLS");cout << "你输入错误,请重新选择!!!" << endl;break;}}}while(choose != 1&& choose != 2 && choose != 3 && choose !=4 && choose != 5 && choose !=6 && choose !=7);return choose;}//初始化联系人的基本信息CONT *AddContaxt(int n){CONT *p,*q,*head;int i;system("CLS");p = (CONT *)malloc(sizeof(CONT));cout << "开始添加联系人信息:"<< endl;cout << "输入姓名:";cin >> p->name;cout << "输入姓别:";cin >> p->sex ;cout << "输入班级:";cin >> p->Class ;cout << "输入住址:";cin >> p->Adrre ;cout << "输入手机号:";cin >> p->Mobi ;cout << "输入qq号:";cin >> p->qq ;head = p;for(i = 2;i <= n;i++){q = (CONT *)malloc(sizeof(CONT));p->next = q ;p = q;system("CLS");cout<< "总共需要输入"<< n << "个联系人的信息,"<<"现在你已输入" << i-1<< "个联系人信息."<< endl<< "请继续输入第"<<i << "个人的信息!!"<< endl;cout << "输入姓名:";cin >> p->name;cout << "输入姓别:";cin >> p->sex ;cout << "输入班级:";cin >> p->Class ;cout << "输入住址:";cin >> p->Adrre ;cout << "输入手机号:";cin >> p->Mobi ;cout << "输入qq号:";cin >> p->qq ;}p->next = NULL;return head;}//按照不同的要求插入联系人的基本信息CONT *InsertCon(CONT *head){CONT *pc,*p,*q;int choose ;char name[10];if(head ==NULL){cout << "还没有添加任何联系人,请先添加联系人!!"<< endl;return head;}pc = (CONT *)malloc(sizeof(CONT));cout << "请依次输入被插入人的信息:姓名 /性别/班级/住址/手机号/qq 号"<< endl;cin >> pc->name >> pc->sex >> pc->Class >> pc->Adrre >> pc->Mobi >> pc->qq ;pc ->next = NULL;cout << "请选择自己喜欢的插入方式: "<< endl<< "1 插入在自己喜欢的人之前"<< endl << "2 插入在最后" << endl << "3 插入在开头" << endl;do {cin >> choose;switch(choose){case 1:cout << "请输入自己喜欢的人的名字:";cin >> name ;if(strcmp(head->name ,name)==0){pc->next = head;head = pc;return head;}else{q = head;p = head->next ;while(strcmp(p->name,name)!=0 && p->next !=NULL){q = p;p = p->next ;}if(strcmp(p->name ,name)==0){pc->next = p ;q = pc;return head;}else{p->next = pc;return head;}}break;case 2://cout << "请输入自己喜欢的人的名字:";//cin >> name ;p = head;while(p->next != NULL)p = p->next ;p->next = pc;return head;break;case 3://cout << "请输入自己喜欢的人的名字:";//cin >> name ;pc->next = head;head = pc;return head;break;default :cout<<"error"<< endl;break;}}while(choose!=1 &&choose != 2 && choose != 3); }//查找联系人的基本信息CONT *FindCon(CONT *head){system("CLS");char na[20];CONT *p,*q;if(head == NULL){cout << "没有任何信息可查找,请先添加信息!!"<< endl;return head;}cout << "请您输入要查找人的姓名:"<< endl;cin >> na;p = head;while(p!= NULL){if(strcmp(p->name ,na)==0){q = p;cout << "找到联系人,信息如下!!"<< endl;cout << "姓名:" << q->name <<" 性别: " << q->sex << q->Class <<" 住址: " <<q->Adrre <<" 手机号: " <<q->Mobi <<" qq号: "<< q->qq << endl;break;}elsep = p->next ;}return head;}//修改联系人的基本信息CONT *AmendMessage(CONT *head){CONT *p;char nam[10];char sex[5];char Adrre[50];char Class[20];char Mobi[20];char qq[10];if(head == NULL){cout<< "没有任何信息,请返回添加信息!!!"<< endl;return head;}elsep = head;cout << "请你输入要修改人的名字:";cin >> nam;while(p != NULL && p->name != nam){if(strcmp(p->name ,nam)==0){strcpy(p->name ,nam);int choose;do{cout << "请选择要修改哪一项的信息!!!"<< endl;cout << "1 修改性别 2 修改班别 3 修改地址 4 修改手机号码 5 修改qq号 " << endl;cin >> choose;switch(choose){case 1:cout << "请输入要修改后的性别:";cin >> sex;strcpy(p->sex , sex);cout << "修改成功!!!"<< endl; system("CLS");return head;break;case 2:cout << "请输入修改后的班别:"; cin >> Class;strcpy(p->Class ,Class);system("CLS");cout << "修改成功!!!"<< endl; return head;break;case 3:cout << " 请输入修改后的地址:"; cin >> Adrre;strcpy(p->Adrre ,Adrre);system("CLS");cout << "修改成功!!!"<< endl;return head;break;case 4:cout << "请输入修改后的手机号码:"; cin >> Mobi;strcpy(p->Mobi ,Mobi);system("CLS");cout << "修改成功!!!"<< endl;return head;break;case 5:cout << "请输入修改后的qq号:"; cin >> qq;strcpy(p->qq ,qq);system("CLS");cout << "修改成功!!!"<< endl;return head;break;default:cout << "输入错误,重新选择!!" << endl;break;}}while(choose != 0);}else if(p->next != NULL && p->name != nam){p = p->next ;}else{cout << "输入名字错误,请重新选择4修改!!!" << endl;return head;}}//return head;}//删除联系人的基本信息CONT *DeleteMessage(CONT *head){CONT *p,*q,*t;char name[20];char elem[10];cout << "请输入要删除联系人的姓名:";cin >> name;if(head == NULL){cout << "没有任何信息可删除,请添加信息!!"<< endl;return head;}else if(strcmp(head->name,name)==0 ){t = head;head = head->next ;return head;}else{p = head->next ;q = head;}while(p !=NULL && p->name != name) {q = p;p = p->next ;}if(strcmp(p->name ,name)==0){q->next = p->next ;free(p);//t = p;}else{cout<< "表中无该元素!" << endl;return head;}if(t){// elem = t->name ;free(t);}return head;}//保存文件CONT *saveFileCONT(CONT *head ){char *fileName;FILE *fp;CONT *p;p = (CONT *)malloc(sizeof(CONT));if(p=NULL)cout <<"分配内存失败"<< endl;// exit(0);}if(head ==NULL){cout <<"没有任何信息,请先添加信息!!"<< endl;return head;}else{p = head;fileName = (char *)malloc(sizeof(char));cout << "请输入文件名:" << endl;cin >> fileName;fileName = strcat(fileName,".txt");if( (fp = fopen(fileName,"a")) == NULL)cout << "can't open file" << endl;{//fwrite(head,sizeof(CONT),1,fp);//fprintf(fp,p->name,p->sex,p->Class,p->Adrre,p->Mobi,p->qq );fprintf(fp," 姓名:");fprintf(fp, p->name );fprintf(fp," 性别:");fprintf(fp, p->sex);fprintf(fp," 班别:");fprintf(fp, p->Class);fprintf(fp," 地址:");fprintf(fp, p->Adrre);fprintf(fp," 手机号:");fprintf(fp, p->Mobi);fprintf(fp," qq号:");fprintf(fp, p->qq);fprintf(fp,"\n");cout << endl;cout <<"--------------------------------------------------------------------------------";cout << " "<<"姓名:" <<p->name <<" 性别:" <<p->sex << " 班别:" <<p->Class <<" 住址:" <<p->Adrre <<"手机号:"<< p->Mobi <<" qq号:" << p->qq << endl;cout <<"--------------------------------------------------------------------------------";p=p->next ;}while(p!=NULL);}fclose(fp);return head;}//读取文件内容CONT *readFileCONT(CONT *head){char *fileName;CONT *p;FILE *fp;fileName = (char *)malloc(sizeof(char));cout << "请输入要打开的文件名:";cin >> fileName;fileName = strcat(fileName,".txt");fp = fopen(fileName,"r");if(fp == NULL){cout << "文件没有任何信息,请先输入信息!!"<< endl; }else{while(!feof(fp)){p = (CONT *)malloc(sizeof(CONT));if(p == NULL){cout << "分配内存失败!!"<< endl;return head;}fscanf(fp,p->name );fscanf(fp,p->sex );fscanf(fp,p->Class );fscanf(fp,p->Adrre );fscanf(fp,p->Mobi );fscanf(fp,p->qq );cout <<"--------------------------------------------------------------------------------";cout << " "<<"姓名:" <<p->name <<" 性别:" <<p->sex << " 班别:" <<p->Class <<" 住址:" <<p->Adrre <<"手机号:"<< p->Mobi <<" qq号:" << p->qq << endl;cout <<"--------------------------------------------------------------------------------";p->next = head;head = p;p = p->next ;}fclose(fp);cout<< "读取信息成功!!!"<< endl;}fclose(fp);return head;}//显示信息void showmessage(CONT *head){CONT *p;int i=0;if(head == NULL ){cout << "没有任何信息可输出,请添加信息!!!"<< endl;}else{p = head;cout << "*******************************联系表如下***************************************";do{i++;cout <<"--------------------------------------------------------------------------------";cout << i << " "<<"姓名:" <<p->name <<" 性别:" <<p->sex << " 班别:" <<p->Class <<" 住址:" <<p->Adrre <<"手机号:"<< p->Mobi <<" qq号:" << p->qq << endl;cout <<"--------------------------------------------------------------------------------";p = p->next ;}while(p!=NULL);}cout << "*********************************联系表***************************************";cout << endl;}2、停车场管理(栈和队列的应用)[问题描述]设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
《数据结构》课程设计报告范本(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.理解数据结构的基本概念,熟悉各类数据结构的特点和应用场景。
2.学会使用常见的数据结构进行问题求解,具备分析问题和设计算法的能力。
3.掌握数据结构的基本算法,能够实现并优化相关算法。
三、课程设计内容1.线性表定义和特点常见操作(插入、删除、查找、排序等)应用场景(顺序存储、链式存储等)2.栈和队列定义和特点常见操作(入栈、出栈、入队、出队等)应用场景(递归、表达式求值、广度优先搜索等)3.树与二叉树定义和特点常见操作(创建、遍历、查找、插入、删除等)应用场景(查找排序、哈希表、优先队列等)4.图定义和特点常见操作(创建、遍历、查找、最短路径等)应用场景(社交网络、地图导航、最小树等)5.算法设计与分析常见算法(排序、查找、图算法等)时间复杂度分析空间复杂度分析四、课程设计方法1.理论教学:通过课堂讲解,使同学们了解数据结构的基本概念、原理和方法。
2.实践教学:通过上机实验,让同学们动手实现相关算法,提高编程能力。
3.课后作业:布置一些具有代表性的题目,让同学们独立思考,巩固所学知识。
五、课程设计评价1.课堂表现:考察同学们的出勤、发言、作业完成情况等。
2.上机实验:考察同学们的编程能力、算法实现情况等。
3.课后作业:考察同学们对知识点的掌握程度。
六、课程设计进度安排1.第一周:线性表2.第二周:栈和队列3.第三周:树与二叉树4.第四周:图5.第五周:算法设计与分析注意事项:1.理解深度与广度平衡每个数据结构都有其深奥的理论和复杂的实现细节,但初学者容易陷入要么只懂皮毛要么过度深入研究两极分化的困境。
西安邮电大学(计算机学院)数据结构课程设计报告题目:哈弗曼编/译码器专业名称:计算机科学与技术班级:计科1505学生姓名:常昊学号(8位):04151160指导教师:设计起止时间:2016年12月26日—2016年12月30日一. 设计目的1.训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
二. 设计内容利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
三.概要设计1.建立哈夫曼树:读入文件(*.souce),统计文件中字符出现的频度,并以这些字符的频度作为权值,建立哈夫曼树。
这一步需要做字符的统计所以考虑到大量数据的处理,需要考虑时间复杂度带来的影响。
所以采用牺牲一定的存储空间的方法,以哈希表的方法完成统计。
因为字符的ascll 码是0~128不重复的整数,所以采用不散列的简单哈希表。
(例如:对于abcdabbccc 的串的处理——遍历字符串,HZArray[char[i]].HZ++)。
在完成频数的统计后,下一步对整个128的数组中的频数非零的字符按照从小到大的顺序排序。
考虑到稳定/非稳定排序对于本题没有什么影响,而且对于128的排序总数来说各种排序的方法时间复杂度相对计算机的性能不会相差多少,所以采用简单冒泡排序,而且,每次的排序实际数量都不会很多,加上flag的优化以后排序效率还是不错的。
完成排序后,根据哈弗曼树的性质,直接依据有序序列建立哈弗曼树。
数据结构实验指导书东华大学计算机科学与技术学院2009年9月目录前言 (1)一、概述 (1)二、实验步骤 (2)三、实验报告规范 (5)四、算法书写规范 (6)五、参考书目 (9)实验〇顺序表与链表 (10)实验〇实验报告示例 (12)实验一线性表 (25)实验报告示例:集合的并、交和差运算 (28)实验二栈和队列 (42)实验报告示例:迷宫问题 (45)实验三树和二叉树 (57)实验四图 (60)实验五查找 (63)实验六排序 (65)实验七综合设计性实验——航班信息的查询与检索 (67)前言一、概述上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。
为了达到上述目的,本指导书安排了七个主实验单元(其中除实验0作为预备练习,训练数组和链表的编程方法和编程技巧),其它各单元的训练重点在于基本的数据结构,而不强调面面俱到。
各实验单元与教科书的各章只具有粗略的对应关系,一个实验题常常涉及几部分教学内容。
在每个实验单元中安排有难度不等的实验题,经验表明,如果某题的难度略高于自己过去所对付过的最难题目的难度,则选择此题能够带来最大的收益。
切忌过分追求难题或者容易的题目。
一些实验题采取了统一的格式(其余的实验题由于比较简单,没有这么详细列出来,读者可举一反三),由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。
数据结构课程设计报告设计题目:运动会分数统计迷宫问题求解学院:信息科学与技术学院年级专业:10级电气信息大类学号:100900905学生姓名:刘妍指导老师:孙韶媛2012年1月一、设计目的:课题一运动会分数统计1、任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1~m,女子m+1~m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。
(m<=20,n<=20)2、功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。
课题二迷宫问题求解问题描述:迷宫问题是取自心理学的一个古典实验。
实验中,把一只老鼠从一个没有顶的大盒子的门放入,在盒中设置了许多墙,对行进的方向形成了多处阻挡。
盒子仅仅有一个出口,在出口处放置了一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。
重复对老鼠进行上述实验,看老鼠能在多久找到出口。
请设计一个算法实现迷宫问题求解。
二、总体设计:1、运动会分数统计:设计思路:所需功能:成绩输入/输出、查询结果、调用统计结果输入数据:学校编号、项目编号、取得的名次、哪些名次采用结构体数据类型,利用冒泡法实现相应的排序;利用“switch”语句实现功能的选择;利用“for”语句实现各个方式的数据输入。
详细设计:void inputinformation() 信息输入模块,开始输入信息**void output() 信息输出模块,选择按不同的方式输出信息**void inquiry() **查询模块,用来查询信息** 流程图:源代码:#include<stdio.h>#include<math.h>#define n 2 //学校数目#define m 1 //男子项目数目#define w 1 //女子项目数目typedef struct //typedef :为一种数据类型定义新名字。
九江学院信息科学与技术学院《数据结构课程设计》报告书题目学生成绩管理系统专业:信息管理与信息系统班级:姓名:学号:同组人员:指导老师:设计时间:2018年3月23日~ 2018年3月28日目录数据结构》课程设计报告书11.课程设计<实训)计划32.系统需求分析与功能设计33.总体设计44.程序模块设计65.技术难点与分析76.系统测试87.心得体会98.参考文献101.课程设计< 实训)计划3月24日:完成必做工程班级通讯录管理3月25日:上午完成选做工程的需求分析、总体设计下午完成选做工程的模块设计3月26号:完成系统的编码和调试3月27号:设计有效的测试方法与测试数据、书写实验报告3月28号:准备答辩2.系统需求分析与功能设计(根据课题的要求进行简单的需求分析,设计相应的数据流图,得出相应的系统功能需要,系统数据流图><1 )具备对成绩的管理功能< 添加、删除、排序)<2)具备按学号、姓名查询成绩的功能。
备注:成绩记录的信息有学号、姓名。
可以用能表示学生成绩的结构体数组存储数据。
1:删除学生姓名、学号、成绩及学生列。
2:对学生信息进行相应的修改< 对象为:姓名、学号、成绩)。
3:输入学生姓名、学号、成绩来添加学生列。
用C语言编程比较同类数据<成绩)大小进行排序。
4:通过输入学生的姓名、学号来查询对应的成绩。
3. 总体设计(根据功能需求,设计系统的总体结构。
系统总体功能模块图,菜单的设计> Creat(>创建表,输入姓名 班级学号各科成绩void menu(>。
主登陆界面void ma in (> 。
主函数void alter(li nklist L> 。
修改学生信息void del node(li nklist L> 。
删除学生信息void in sert(li nklist L,list node *p> 。
信息科学与工程学院课程设计任务书题目:算术表达式求值学号:姓名:年级:专业:计算机网络技术课程:数据结构指导教师:完成时间: 2012年12月28日课程设计任务书及成绩评定目录第一章概述 (1)第二章系统分析 (1)第三章概要设计 (2)第四章详细设计 (5)第五章运行与测试 (13)第六章总结与心得 (16)概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是算术表达式求值演示。
表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。
设计一个程序,演示用算符优先法对算术表达式求值的过程。
深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。
系统分析1.以字符列的形式从终端输入语法正确的、不含变量的整数表达式。
利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
2.一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。
对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果。
3.演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。