数据结构大作业(2010级)

数据结构大作业
提交时间: 2012年6月3日前
提交方式:各班同学在提交时间之前将压缩文件分别提交给本班的学习委员,学委按班级名称建立文件夹,然后统一刻盘(两个班可以刻到一张光盘上),交给助教老师,联系方式( qq: 0)
提交内容: 源程序、文档
提交方式:每个人独立完成一个选题,每个人所有的文件放到一个文件夹中,压缩成.rar文件,文件名为:姓名_学号
_班级
文档要求:
1.对问题的分析、所选用的数据结构及理由、所选方法的优点及问题。

2.程序模块的构成及功能、特殊技巧的说明。

3.程序运行结果及结果分析。

4.交互式程序需说明使用方法;输入的参数个数、类型及实例。

代码要求:统一用C++语言编写,尽量不要调用C++语言提供的库函数(如栈、队列),也不允许用数据库软件来实现。

说明:
“数据结构课程设计(大作业)”是与“数据结构”课程配套的实践性课程。

其目的是让学生运用所学的“数据结构”课程知识,编写一个解决实际问题的大型或中等规模的计算机程序,使学生掌握综合运用数据结构与算法的知识和方法。

这里选择4个题目列出,具体作业只要求选择一个完成,基本要求必作,扩展要求和增强要求为选作。

数据结构大作业跟数据结构课程是分开的,具有独立的1个学分,请同学们按时提交,不要延迟时间,否则影响该独立学分的成绩。

(一)、图书信息管理系统
1.问题阐述:
某校图书馆需要一套图书信息管理系统,图书管理员用此系统记录和处理图书、作者和出版社信息。

(注:一本图书可以有多个作者,一个作者可以编写多本图书)。

需存储的信息包括:图书号、图书名;作者号、作者姓名;出版社号、出版社名;现存量和总库存量。

2.基本要求
基本业务活动包括:
1)对一本书进行采编入库、清除库存、借阅、和归还等。

i.采编入库:
新购入一种书,经分类和确定书号之后登记到图书帐目中去。

如果
这种书在帐中已有,则只将总库存量增加。

ii.清除库存:
某种书已无保留价值,将它从图书帐目中注销。

iii.借阅:
如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号
和归还期限,改变该书的现存量。

iv.归还:
注销对借阅者的登记,改变该书的现存量。

2)查询图书信息:
i.按书名查询:如查找所有书名为“数据结构”的图书。

ii.按作者姓名查询:如查找所有“张三”编写的图书。

iii.按出版社名查询:如查找所有“机械工业出版社”出版的图书。

iv.以上条件的各种组合查询:
如查找所有“张三”编写的、由“机械工业出版社”出版的图书。

(二)停车场管理系统
1.问题描述
设停车场内只有一个可以停放n俩汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入。

当停车场内某辆车要离开时,在它之后进入的车辆必须退出车场为它让路,待该车辆开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

整个停车场的示
2.基本要求
1) 以栈模拟停车场,以队列模拟车场外便道,按照从终端读入的输入数据序列进行模拟管理。

2) 每一组输入数据包括三个数据项:汽车“到达”(用1表示)或“离开”(用2表示)的信息、汽车牌照号码以及到达或离去的时刻。

3) 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

栈以顺序结构实现,队列以顺序循环结构实现。

4) 另外还需要设一个临时栈,用于临时存放为要给离去的汽车让路而从停车场退出来的汽车,也用顺序结构实现。

5) 用户输入的命令有以下5种:
a. 汽车到达
b. 汽车离去
c. 输出停车场中所有汽车牌号
d. 输出便道上所有汽车牌号
e. 退出系统运行。

(三)家谱管理系统设计与实现
1.问题阐述:
家谱用于记录某家族历代家族成员的情况与关系。

本课程设计要求设计并实现一个计算机软件,支持对家谱的存储、更新、查询、统计等操作。

2.基本要求
内部要求:要求将家谱信息看作树形结构处理,并可存储在外存。

数据可一次读入内存;
外部要求:这一级要求系统具备下列基本功能:
1)家庭成员信息存储:将每个家庭成员的基本信息存储在计算机中(可永久保存)。

家庭成员的基本信息至少应包括:
(姓名,出生地,出生日期,死亡日期,性别,身高,学历,职业,最高职务/职称,…);
2)家族关系存储:将各家庭成员之间的关系,存储在计算机中(可永久保存);
3)更新:家谱数据的更新(修改、删除、加入);D)输出:将家谱以较友好的格式输出(显示);
4)查询:按基本信息查询成员,按亲戚关系查询;
3.增强要求
A)统计:统计并打印(显示)结果,统计的项目有:平均寿命、平均身高、男女比例、家庭平均人口、平均(最高/低)学历、……
4.扩展要求
内部要求:数据较大时,不一次读入内存,采用分块读入;
外部要求:这一级要求系统具备下列基本功能:屏幕显示树形(类似Windows 目
录)、全屏可视化操作、支持鼠标;
5.设计提示
家庭成员基本信息用线性表表示,程序结束后存储在磁盘上,程序开始是从磁盘读出;
家庭成员之间的关系,用树形结构(家族树)表示;
家族树在程序结束后存储在磁盘上,程序开始是从磁盘读出;
树在内存中的存储结构:邻接表或孩子兄弟链,带父指示器;
家庭成员基本信息设置数字编号,用于唯一地标识记录;
树结点用家庭成员的编号标识。

通过编号,建立家庭成员的基本信息与树结点的联系;
树在磁盘文件中的存储结构:存储串行化结果,如“根-叶序列”;
所谓“根-叶序列”,是指,从树根到每个叶子结点的路径。

路径的排列次序表示兄弟的次序。

例如,下图表示的树的“根-叶序列”为:
1, 2, 4
1, 2, 6
1, 2, 8, 5(这三行的次序,表示4,6,8的次序,即4,6,8分别是2的第1,2,3个孩子)
1, 7
1, 3, 9
1, 3, 10
(四)航空客运订票系统
1.问题描述
航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

2.基本要求
1). 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期1 2 3 4 10
9 7 6 8 5
几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位
等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
2).全部数据可以只放在内存中;
3).系统能实现的操作和功能如下:
a)查询航线:
根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
b)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。

若需要,可登记排队候补;
c)承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

3.增强要求
当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他航线情况。

合集下载

2010黑龙江省数据结构考试高级

2010黑龙江省数据结构考试高级
ቤተ መጻሕፍቲ ባይዱ
2、设 T 是一棵满二叉树,编写一个将 T 的先序遍历序列转换为后序遍历序列的递归算法。 3、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表 头指针为 head。 二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表 指针。分析你的算法的时、空复杂度。 4、在有向图 G 中,如果 r 到 G 中的每个结点都有路径可达,则称结点 r 为 G 的根结点。编写 一个算法完成下列功能: (1) .建立有向图 G 的邻接表存储结构; (2) .判断有向图 G 是否有根,若有,则打印出所有根结点的值。 5、 由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树, 下面程序的作用是实现由 已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序 遍历序列,请写出程序所缺的语句。 #define MAX 100 typedef struct Node {char info; struct Node *llink, *rlink; }TNODE; char pred[MAX],inod[MAX]; main(int argc,int **argv) { TNODE *root; if(argc<3) exit 0; strcpy(pred,argv[1]); strcpy(inod,argv[2]); root=restore(pred,inod,strlen(pred)); postorder(root); } TNODE *restore(char *ppos,char *ipos,int n) { TNODE *ptr; char *rpos; if(n<=0) return NULL; ptr->info=(1)_______; for((2)_______ ; rpos<ipos+n;rpos++) if(*rpos==*ppos) break; k=(3)_______; ptr->llink=restore(ppos+1, (4)_______,k ); ptr->rlink=restore ((5)_______+k,rpos+1,n-1-k); return ptr; } postorder(TNODE*ptr) { if(ptr=NULL) return; postorder(ptr->llink); postorder(ptr->rlink); } int k;

数据结构大作业(2010级)

数据结构大作业(2010级)

数据结构大作业提交时间: 2012年6月3日前提交方式:各班同学在提交时间之前将压缩文件分别提交给本班的学习委员,学委按班级名称建立文件夹,然后统一刻盘(两个班可以刻到一张光盘上),交给助教老师,联系方式( qq: 345989660)提交内容: 源程序、文档提交方式:每个人独立完成一个选题,每个人所有的文件放到一个文件夹中,压缩成.rar文件,文件名为:姓名_学号_班级文档要求:1.对问题的分析、所选用的数据结构及理由、所选方法的优点及问题。

2.程序模块的构成及功能、特殊技巧的说明。

3.程序运行结果及结果分析。

4.交互式程序需说明使用方法;输入的参数个数、类型及实例。

代码要求:统一用C++语言编写,尽量不要调用C++语言提供的库函数(如栈、队列),也不允许用数据库软件来实现。

说明:“数据结构课程设计(大作业)”是与“数据结构”课程配套的实践性课程。

其目的是让学生运用所学的“数据结构”课程知识,编写一个解决实际问题的大型或中等规模的计算机程序,使学生掌握综合运用数据结构与算法的知识和方法。

这里选择4个题目列出,具体作业只要求选择一个完成,基本要求必作,扩展要求和增强要求为选作。

数据结构大作业跟数据结构课程是分开的,具有独立的1个学分,请同学们按时提交,不要延迟时间,否则影响该独立学分的成绩。

(一)、图书信息管理系统1.问题阐述:某校图书馆需要一套图书信息管理系统,图书管理员用此系统记录和处理图书、作者和出版社信息。

(注:一本图书可以有多个作者,一个作者可以编写多本图书)。

需存储的信息包括:图书号、图书名;作者号、作者姓名;出版社号、出版社名;现存量和总库存量。

2.基本要求基本业务活动包括:1)对一本书进行采编入库、清除库存、借阅、和归还等。

i.采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。

如果这种书在帐中已有,则只将总库存量增加。

ii.清除库存:某种书已无保留价值,将它从图书帐目中注销。

数据结构大作业

数据结构大作业

班级021051学号021050**数据结构大作业题目 Huffman的编码与译码学院电子工程学院专业智能科学与技术学生姓名****导师姓名朱虎明Huffman 编码与译码1.实验目的:在掌握相关基础知识的基础上,学会自己设计实验算法,熟练掌握Huffman 树的建立方法,Huffman 编码的方法,进而设计出Huffman 译码算法,并编程实现。

2.实验要求:制作出能够实现基于26个英文字母的任意字符串的编译码。

写出技术工作报告并附源程序。

3.实验内容及任务:3.1.设字符集为26个英文字母,其出现频度如下表所示。

3.2.建Huffman 树;3.3.利用所建Huffman 树对任一字符串文件进行编码——即设计一个Huffman 编码器;3.4.对任一字符串文件的编码进行译码——即设计一个Huffman 译码器。

实现步骤:(1)数据存储结构设计; (2)操作模块设计; (3)建树算法设计;51 48 1 15 63 57 20 32 5 1 频度z y x w v u t 字符11611882380频度p 21 f q15 g r 47 h s o n m l k j 字符 57 103 32 22 13 64 186 频度 i e d c b a 空格 字符(4)编码器设计;(5)译码器设计4.分析以及算法描述4.1.分析问题1)首先学习二叉树的知识,了解二叉树的路径、权数以及带权路径长度计算。

2)认识霍夫曼树,了解霍夫曼树的定义,构造霍夫曼树构造算法①又给定的n个权值{w1,w2,w3,……,w n}构造根节点的二叉树,从而得到一个二叉树森林F={T1,T2,T3,……T n}。

②在二叉树森里选取根节点全职最小和此最小的两棵二叉树作为左右节点构造新的二叉树,此时新的二叉树的根节点权值为左右子树权值之和。

③在二叉树森林中删除作为新二叉树的根节点左右子树的两棵二叉树,将新的二叉树加入到二叉树森林F中。

2010吉林省数据结构试题及答案

2010吉林省数据结构试题及答案
C)p=p->next->next; D) p->next=p;
19、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)40
A) 存储密度大 B) 插入运算方便
C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示
36、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
9、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]
C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]
10、设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列是( C )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
31、设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为( A )。
A)p->next=p->next->next; B) p=p->next;
A) 5,4,3,2,1,6 B) 2,3,5,6,1,4
C) 3,2,5,4,1,6 D) 1,4,6,5,2,3
18、设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为( A )。
A)p->next=p->next->next; B) p=p->next;

数据结构大作业(含源代码)

数据结构大作业(含源代码)
数据结构大作业
数 据 结 构 大 作 业
作业题目: 职工信息管理系统 姓 名: 叶尔凯西·革命 学 号: 08080605227 班 级: 计算机 07-(1)班 指导教师: 日 期: 2010 年 6 月 13 日
数据结构大作业
职工信息管理系统
(伊 犁 师 范 学 院 计 算 机 科 学 系 07-1班 叶 尔 凯 西 ) 摘 要 :本程序实现了一个职工管理系统中的常见功能, 包括建立职工信息, 输 出职工信息以及根据职工号、部门号、职工的工资进行排序的功能, 还有对整个职工表 的清空的功能. 关 键 词 : 职工管理; 职工管理系统; 数据排序; 排序
while(p!=NULL)
{
department's
printf("\t%s\t\t%d\t\t\t%d\t\t %d\n",p->name,p->no,p->depno,p->salary); p=p->next;
} } } getch(); } 本函数的功能是实现职工记录表中的所有记录,若没有任何一个记录, 则输出一个 提示语句来提醒使用者职工表为空, 若不为空则从第一号结点开始输出一直到最后一 个结点(以表格形式输出). 下面分别介绍根据职工号、部门号以及职工工资来排序的函数: employee *SortByEmployeeNumber(employee *head) { employee *p,*q,*s,*h,*temp; temp=malloc(sizeof(employee)); h=head; for(s=head->next; s!=NULL; s=s->next) {
数据结构大作业
else
{
p=head->next;

《数据结构》大作业

《数据结构》大作业

《数据结构》大作业
数据结构是计算机科学中构建可靠计算机系统所必需的基础知识。

它主要是用来处理
非常大的量级的数据,并为用户快速访问,高效的解决计算机问题。

由于中央处理机的特
点是高速而有效,起到了极大的性能提升。

数据结构有很多不同的结构,其中最重要的是线性结构和非线性结构。

线性结构又可
以分为数组、单向链表、双向链表和循环链表;非线性结构可以分为二叉树、二叉搜索树、B树、堆、红黑树和图。

在实际计算机程序中,数据结构一般被用来搜索和排序存储的数据,这些操作有助于
提高计算机的运行效率。

如果用户想要查找某一个数据,可以在合适的存储结构中找到它;如果用户希望把一系列数据按照某种顺序排列起来,也可以使用数据结构进行排序。

同时数据结构还可以用于实现数据结构间的转换,使得用户可以较为方便的获得数据。

它的运用,更加方便了计算机的工作,更加提高了计算机的性能。

总之,数据结构是计算机科学中重要的组成部分,它为计算机的工作提供了重要的基础,更加方便了用户的操作,也帮助用户更好地完成计算机系统中的各种工作和解决方案。

中国地质大学2010数据结构试卷及其答案(2)

中国地质⼤学2010数据结构试卷及其答案(2)试卷类别A使⽤班级191081-4 192081-3 193081-2使⽤学期2010春任课教师系主任审核签字考试课程名称:数据结构学时:56考试⽅式:闭卷,笔试考试内容:⼀、单项选择题(每题2分,共40分)1.以下哪⼀个术语与数据的存储结构⽆关?()A.栈B.哈希表C.线索树D.双向链表2.以下算法的时间复杂度是()。

int func(int n){ int x=1;while (x*x<=n) x++;return x;}A.O(n2) B.O(n) C.O(log2n) D.O(2n)3.若某线性表最常⽤的操作是存取任⼀指定序号的元素和在最后进⾏插⼊和删除运算,则利⽤()存储⽅式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表4.链表不具有的特点是()。

A.插⼊、删除不需要移动元素B.可随机访问任⼀元素C.不必事先估计存储空间D.所需空间与线性长度成正⽐5.在单链表指针为p的结点之后插⼊指针为s的结点,正确的操作是()。

A.p->next=s; s->next=p->next; B.s->next=p->next; p->next=s;C.p->next=s; p->next=s->next; D.p->next=s->next; p->next=s;6.若⼀个栈的输⼊序列为1,2,3,…,n,输出序列的第⼀个元素是i,则第j个输出元素是()。

A. i-j-1B. i-jC. j-i+1D. 不确定的7.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。

A. 1175B. 1180C. 1205D. 12108.在下述结论中,正确的是()。

①只有⼀个结点的⼆叉树的度为0;②⼆叉树的度为2;③⼆叉树的左右⼦树可任意交换;④深度为K的完全⼆叉树的结点个数⼩于或等于深度相同的满⼆叉树。

数据结构真题及答案(2010)

杭州电子科技大学2010《数据结构》真题及解析一、是非题(每小题2分,共20分)1.线性表的顺序存储结构优于链式存储结构。

2.栈和队列也是线性表。

如果需要,可对它们中的任一元素进行操作。

3.非空广义表的表头和表尾都有可能是原子或广义表。

4.在二叉树的先序遍历序列中,任意-个结点均处在其孩子结点的前面。

5.通常,在二叉树的第i层上有2^i-1个结点。

6.二叉树按某种次序线索化后,任一结点均有指向其前驱和后继的线索指针。

6.赫夫曼树中的结点个数一定是奇数。

8.用邻接矩阵(数组表示法)存储一个图时,所需的存储空间大小与图的边数无关。

9.对于一棵m阶的B-树而言.树中每个结点至多有m个关键字,除根之外的所有非终端结点至少有┌m/2┐个关键字。

10.对于任何待排序序列来说,快速排序均快于冒泡排序。

二、选择题(每小题2分,共20分)1.递归过程可借助于_____转化为非递归过程。

A:线性表 B:队列 C:栈 D:数组2.循环队列用数组A[0..m-1]存放其元素值,设头尾游标分别为front(队头元素的位置)和rear(队尾元素的位置),则当前队列中的元素个数是_______。

A: rear-front B: rear-front+1C: (rear-front+m)%m D: (rear-front+1+m)%m3.对广义表A=((a, (6)),(c,()),d)执行操作gettail(gethead(gettail (A)))的结果是:________。

A:() B:(()) C:d D:(d)4.对二叉排序树______可得到有序序列。

A:按层遍历 B:前序遍历C:中序遍历 D:后序遍历5.在有n个结点的二叉树的二叉链表表示中,空指针数为________。

A:不定 B: n+1 C:n D:n-16.图示的三棵二叉树中_____为最优二叉树。

A: B: C:7.设无向图G=(V,E)和G=(V′,E′),若G′是G的生成树,则下面不正确的说法是_________。

数据结构实践作业

数据结构作业利用单向链表数据结构完成对链表的如下操作:1、创建一条含整数结点的无序链表2、链表结点的输出3、链表结点的升序排序4、分别计算链表中奇数和偶数结点之和并输出5、释放链表具体要求将程序功能做成菜单,形式如下:1、创建一条含整数结点的无序链表2、链表结点的输出3、链表结点的升序排序4、分别计算链表中奇数和偶数结点之和并输出5、释放链表0、退出《数据结构》大作业1 总体要求将程序功能做成菜单,形式如下:(1)创建一条含整数结点的无序链表(2)链表结点的输出(3)链表结点的升序排序(4)分别计算链表中奇数和偶数结点之和并输出(5)释放链表2 开发环境软件环境:Window10,Visual Studio 20173 系统运行效果截图(1)主菜单:(2)创建一条含整数结点的无序链表:3,6,2,5,9(3)链表结点的输出(4)链表结点的升序排序(5)分别计算链表中奇数和偶数结点之和并输出(6)释放链表4 源程序#include<iostream>//头文件using namespace std;//节点数据结构定义struct node{int data;node *next;};//创建一条含整数结点的无序链表node *CreateLinkList(){node *p1, *p2, *head;int n;p2 = NULL;head = NULL;cout <<"正在创建一个无序链表\n";cout <<"请输入一个整数,以-1结束:";cin >> n;//循环输入一个整数,直到数值为-1结束,创建一条无序链表while (n != -1){p1 = new node;p1->data = n;//采用尾插法,新建一个结点并连接到链表尾部if (head == 0){head = p1; p2 = p1; //首结点的建立}else{p2->next = p1; p2 = p1;}cout <<"请输入一个整数,以-1结束:";cin >> n;}if (head != 0) //尾结点p2->next = 0;return(head);}//输出结点void PrintLinkList(const node *head){const node *p;p = head;while (p != NULL){cout <<" "<< (p->data);p = p->next;}cout << endl;}//升序排序void SortLinkList(node *head){node temp;node *p = NULL;node *q = NULL;//判断结点为空或者只有一个结点if (head == NULL || head->next == NULL){return;}//p->next!=NULL为链表倒数第2个结点for (p = head; p->next != NULL; p = p->next) {for (q = p->next; q != NULL; q = q->next){if (p->data > q->data) //升序{ //交换数据域temp.data = q->data;q->data = p->data;p->data = temp.data;}}}return;}//奇数结点和int OddSumLinkList(const node *head){int sum = 0;const node *p;p = head;while (p){//判断数值为是否奇数if (p->data % 2 != 0){sum = sum + p->data;}p = p->next;}return sum;}//偶数结点和int EvenSumLinkList(const node *head){int sum = 0;const node *p;p = head;while (p){//判断是否偶数if (p->data % 2 == 0){sum = sum + p->data; //偶数结点的数值累加}p = p->next;}return sum;}//释放链表void DeleteLinkList(node *head){node *p;while (head){p = head;head = head->next;delete p;}printf("释放成功\n");}void main(){node *head;head = NULL;int select;cout <<"************菜单************"<< endl;cout <<"输入对应选择,执行对应操作"<< endl;cout <<"1.创建一条含整数结点的无序链表"<< endl;cout <<"2.链表结点的输出"<< endl;cout <<"3.链表节点的升序排序"<< endl;cout <<"4.分别计算链表中奇数和偶数结点之和并输出"<< endl;cout <<"5.释放链表"<< endl;cout <<"0.退出"<< endl;while (1){cout <<"\n请输入选择:";cin >> select;switch (select) //判断选项,并执行对应的函数{case 1:{head = CreateLinkList();printf("无序链表创建完成\n");break;}case 2:{printf("输出链表中各结点数据:");PrintLinkList(head);break;}case 3:{SortLinkList(head);printf("升序后:");PrintLinkList(head);break;}case 4:{int oddsum;int evensum;oddsum = OddSumLinkList(head);evensum = EvenSumLinkList(head);printf("奇数和= %d,偶数和= %d\n", oddsum, evensum);break;}case 5:{DeleteLinkList(head);break;}case 0:{cout <<"退出"<< endl;exit(0);}default:{cout <<"输入选项有误,请重新输入:"<< endl;break;}}}}。

数据结构大作业

一、大作业设计题目以下题目中任选一个1.哈夫曼编码/译码器设计要求:针对字符集A及其各字符的频率值(可统计获得),给出其中字符的哈夫曼编码,并针对一段文本(定义在A上),进行编码和译码,实现哈夫曼编码/译码系统。

2.算术表达式求值设计要求:输入任意一个算术四则表达式,可求出其值。

3.一元多项式的代数运算设计要求:计算任意两个一元多项式的加法、减法和乘法。

4.最小生成树问题设计要求:在n个城市之间架设网络,只需保证连通即可,求最经济的架设方法。

二、大作业报告要求大作业报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下7个内容:1.需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

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

3.详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。

4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c.经验和体会等。

5.用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。

6.测试结果列出你的测试结果,包括输入和输出。

这里的测试数据应该完整和严格,最好多于需求分析中所列。

7.附录带注释的源程序。

如果提交源程序软盘,可以只列出程序文件名的清单。

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