数据结构实习报告模板.docx

上传人:b****8 文档编号:9445701 上传时间:2023-02-04 格式:DOCX 页数:77 大小:36.25KB
下载 相关 举报
数据结构实习报告模板.docx_第1页
第1页 / 共77页
数据结构实习报告模板.docx_第2页
第2页 / 共77页
数据结构实习报告模板.docx_第3页
第3页 / 共77页
数据结构实习报告模板.docx_第4页
第4页 / 共77页
数据结构实习报告模板.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

数据结构实习报告模板.docx

《数据结构实习报告模板.docx》由会员分享,可在线阅读,更多相关《数据结构实习报告模板.docx(77页珍藏版)》请在冰豆网上搜索。

数据结构实习报告模板.docx

数据结构实习报告模板

 

数据结构实习报告模板

篇一:

数据结构实习报告模板

 

数据结构实习报告

 

题目:

 

班级:

 

姓名:

 

完成日期:

 

一、问题描述:

 

文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。

试写一个实现这一目标的文字统计系统,称为“文学研究助手”。

 

英文小说存于一个文本文件中。

待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。

程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。

 

二、需求分析:

 

1、文本串非空且以文件形式存放,统计匹配的词集非

 

空。

文件名和词集均用户从键盘输入;

 

2、“单词”定义:

由字母构成的字符序列,中间不含

 

空格字符且区分大小写;

 

3、待统计的“单词”在文本串中不跨行出现,它或者

 

从行首开始,或者前置若干空格字符;

 

4、在计算机终端输出的结果是:

单词,出现的次数,

 

出现的位置所在行的行号,同一行出

 

现两次的只输出一个行号;

 

5、测试数据:

将实验的源程序作为测试文件,从中任

 

意选取“单词”作为测试的词集。

 

三、概要设计:

 

采用截取字符串、比较字符串的模式来完成“单词匹配

 

比较”,从而统计出其出现的位置和次数。

 

1、数据结构定义:

 

程序将涉及到如下两个线性表结构的数据类型,用类C

 

语言描述如下:

 

(1)定义从文本读取的“单词串”类型:

 

ADTFileString{

 

数据对象:

D={Si|Si

∈标准c++字符串集合,i=

1,2,3,,,

.,n,n

≥0};数据关系:

R1={}|Si-1,Si∈

D,i=1,2,3,

..,n}基本操作:

createFileString(FSList&FSL);

 

初始条件:

已知一个空的“文本单词串表头”;

 

操作结果:

生成一个空的“文本单词串序列”;

 

insertFileString

(FSList

&FSL,string

str,int

row);

初始条件:

FSL

为文本字符串序列的表头

str

为一个标

 

准的c++字符串,row代表了字符

 

串出现的行数;

操作结果:

将str插入到文本字符串序列中,不需要排

 

序;若FSL为空表头,则创建一个

 

字符串序列;否则插在字符串序列尾部;

 

getFSLength(FSListFSL);

 

初始条件:

FSL为文本字符串序列的表头;

 

操作结果:

获取以FSL为表头的文本字符串的长度

 

printFileString(FSListFSL);

 

初始条件:

FSL为文本字符串序列的表头;

 

操作结果:

打印以FSL为表头的文本字符串中的所有字

 

符串;

 

readFile(FSList&FSL);

 

初始条件:

FSL为文本字符串序列的表头;

 

操作结果:

从文件中读取字符串序列,并将其保留在以

 

FSL为表头的字符串序列中;clearFileString(FSList&

 

FSL);

 

初始条件:

FSL为文本字符串序列的表头;

 

操作结果:

以FSL为表头的文本字符串序列被清空;

 

}ADTFileString

 

(2)定义从键盘读取的“单词串”类型:

 

ADTKeyString{

 

数据对象:

 

1,2,3,,,.,n,n

 

数据关系:

 

D={Si|Si

 

≥0};

 

R1={}|Si-1,Si

 

∈标准c++字符串集合,i=

 

∈D,i=1,2,3,,..,n}

基本操作:

 

createKeyString(KSList&KSL);

 

初始条件:

已知一个空的“键盘单词串表头”;

 

操作结果:

生成一个空的“键盘单词串序列”;

insertKeyString

(KSList

&KSL,string

str,int

row);

初始条件:

KSL为键盘字符串序列的表头

str

为一个标

准的

c++字符串,

row

代表了字符

串出现的行数;

 

操作结果:

将str插入到键盘字符串序列中,不需要排

 

序;若KSL为空表头,则创建一个

 

字符串序列;否则插在字符串序列尾部;

 

getKSLength(KSListKSL);

 

初始条件:

KSL为键盘字符串序列的表头;

 

操作结果:

获取以KSL为表头的键盘字符串的长度

 

printKeyString(KSListKSL);

 

初始条件:

KSL为键盘字符串序列的表头;

 

操作结果:

打印以KSL为表头的键盘字符串中的所有字

 

符串;

 

readKey(KSList&KSL);

 

初始条件:

KSL为文本字符串序列的表头;

 

操作结果:

从键盘中读取字符串序列,并将其保留在以

 

KSL为表头的字符串序列中;clearKeyString(KSList&

 

KSL);

 

初始条件:

KSL为文本字符串序列的表头;

 

操作结果:

以KSL为表头的文本字符串序列被清空;

 

}ADTKeyString

 

2、模块设计:

 

篇二:

数据结构实习报告

 

《数据结构》

 

上机报告

 

学号:

XX1002072

 

班级序号:

116131-12

 

姓名:

陶剑浩

 

指导老师:

吴亮

 

成绩:

 

中国地质大学(武汉)

 

信息工程学院信息工程系

XX年12月

 

【实习一】线性表及其应用

 

【问题描述】

 

大数运算——计算n的阶乘(n>=20)。

 

【基本要求】

 

(1)数据的表示和存储:

 

()累积运算的中间结果和最终的计算结果的数据类

 

型要求是整型——这是问题本身的要求;

 

()试设计合适的存储结构,要求每个元素或结点最多

存储数据的3位数值。

 

(2)数据的操作及其实现:

 

基于设计的存储结构实现乘法操作,要求从键盘上输入

 

n值,在屏幕上显示最终计算结果。

【实现提示】

 

1)设计数据的存储结构:

 

介于阶乘运算的精确性以及实型数据表示的不精确性,

 

本题不能采用实型表示累积运算的中间结果和最终的计算

 

结果,而只能用整型。

然而由于普通整型和长整型所能表述

 

数的范围受其字长的限制,不能表示大数阶乘的累积结果,

 

故必须设计一个合适的数据结构实现对数据的存储,例如可

 

以让每个元素或结点存储数据的若干位数值。

 

从问题描述不难看出n值为任意值,故为使程序尽量不

 

受限制,应采用动态存储结构

 

【可采用的数据结构】

 

(1)采用链式存储结构实现(普通单链表,循环单链

 

表,普通双项链表和双向循环链表中任选一种结构)。

 

(2)采用动态数组实现。

 

【设计思想】

 

使用链表形式进行处理,测试数据:

 

输入:

(1)n=20,

 

输出:

n!

=243290XX176640000

 

输入:

(2)n=30,

 

输出:

n!

=265252859812191058636308480000000

 

【测试】

 

【源代码】//大数运算.cpp:

定义控制台应用程序

 

的入口点。

//

 

#include""

 

#include

 

usingnamespace

 

std;

 

template

 

classChain;

 

template

 

classChainNode

 

{

 

};

 

template

 

classChain

 

{

 

public:

 

};

 

//析构函数(删除链表的所有节点)

 

template

 

Chain:

:

~Chain()

 

{

 

}

 

//确定链表的长度

 

templateChainNode*next;while(first){}next=

 

first->link;deletefirst;first=next;Chain(){first

 

=0;};~Chain();boolIsEmpty()const{returnfirst==

 

0;}intLength()const;boolFind(intk,T&x);

 

Chain&Insert(intk,constT&x);Chain&Change(intk,

 

Tx);Chain&Delete(intk,T&x);Chain&Search(const

 

T&x)const;intOutPut();ChainNode*first;friendChain;

 

Tdata;ChainNode*link;private:

private:

 

intChain:

:

Length()const

 

{

 

}

 

//在链表中查找第K个元素

 

template

 

boolChain:

:

Find(intk,T&x)

 

{

 

}

 

//向链表中插入元素

 

template

 

Chain&Chain:

:

Insert(intk,constT&x){

 

ChainNode*p=first;for(intindex

 

indexlink;ChainNode*y=newChainNode;y->data=x;

 

if(k){}else{}y->link=first;first=y;y->link

 

=p->link;p->link=y;ChainNode*current=first;

 

index=0;while(indexdata;returntrue;}return

 

current=current->link;index++;ChainNode*current=

 

first;intlen=0;while(current){}returnlen;

 

current=current->link;

 

=1;

 

int

 

false;

 

len++;

篇三:

数据结构实训报告样本

 

(数据结构实训报告)

 

 

 

 

 

 

................................................

...........

1

二、

实训题

................................................

...........

1

三、

实训步

 

 

................................................

...........

2

四、

实训

................................................

...........

2

五、

实训

................................................

..........

19六、

参考

................................................

..........19

 

一、实训目的

 

通过实训,对所学数据结构和程序设计的基本知识和基本理论有更进一步的了解和认识,将理论和实际相结合,能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来。

主要是培养学生综合利用C语言进行程序设计的能力和创新能力以及综合解决问题的能力。

运用算法分析与程序设计的一般方法进行实际项目的开发。

本次实训尽量选取与实际结合紧密或学生比较感兴趣的项目,本次实训学生需要具备熟练的程序设计基础、数据结构和计算机应用基础知识,具备程序编写、调试的基本能力,具有一定的文字表达和报告撰写能力,具备办公软件使用能力。

 

通过实训,考查语言基本概述掌握是否牢固,并考查与后续课程较为密切的结构体,链表,文件的运用熟练程度,

 

加强对基本概念的理解和复习,最重要的是了解基本软件的设计步骤,还有对软件调试的掌握。

能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

 

二、实训题目

(一)单项题目1、二叉树遍历【问题描述】建立二叉树,实现二叉树的先序遍历、中

 

序、后序和层序遍历(用递归或非递归的方法都可以)。

 

【要求】编写菜单程序。

能够输入二叉树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立二叉树存储结构的输入函数、输出先序遍历序列的函数;输出中序遍历序列的函数;输出后序遍历序列的函数;输出层序遍历序列的函数。

(二)综合题目1、图书管理系统

 

【问题描述】建立一个图书信息文件,包括书号(num)、书名(bookname)、作者(name)、出版社(publish)、价格

(price)等。

 

【要求】建立一个图书信息文件,包括书号(num)、书名(bookname)、作者(name)、出版社(publish)、价格

(price)等。

 

三、实训步骤1、问题分析

 

正确理解问题,分析问题究竟“做什么”,分析问题已

 

知的信息及其作用,分析在解决中对信息处理的规则、要求、

 

限制条件,分析问题解决后应该输出什么样的结果(输出形

 

式、格式、内容)。

并分析得出判定结果是否正确的标准。

2、设计分析

 

得出解决问题的思路、主要流程、采用的数据结构类型

 

的说明、主要算法的思想。

3、设计方案

 

采用的数据结构类型的定义、主要算法的描述及说明。

 

4、详细设计

 

根据问题要求和已得到的算法编写程序。

5、调试程序

 

发现程序中存在的语法错误和一些逻辑错误,并修改,

 

使程序能够运行。

6、运行程序

 

选择若干具有代表性的输入数据(包括合理数据和不合

 

理数据),进行测试,尽量使程序的各语句和分支都被检查

 

到,以便发现程序中的错误和漏洞,以便改进算法和程序。

7、使用说明

 

包括程序源代码、算法(程序)流程图、开发过程中各

 

阶段的有关记录、算法的正确性证明、程序的测试结果、对

 

输入输出要求及格式的详细描述。

四、实训内容

(一)个人题目1、二叉树遍历

 

【问题描述】建立二叉树,实现二叉树的先序遍历、中

 

序、后序和层序遍历(用递归或非递归的方法都可以)。

 

【要求】编写菜单程序。

能够输入二叉树的各个结点,

 

并能够输出用不同方法遍历的遍历序列;分别建立二叉树存

 

储结构的输入函数、输出先序遍历序列的函数;输出中序遍

 

历序列的函数;输出后序遍历序列的函数;输出层序遍历序

 

列的函数。

 

【设计分析】1、总体设计(基本概念)树的概念

 

树(Tree)是n(n>=0)个结点的有限集。

在任意一棵

 

非空树中:

1)有且仅有一个特定的称为根的结点;

 

2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2......Tm,其中每一个集合又是一棵树,并且称为根的子树(SubTree)。

 

【例】如图1所示:

图1

图1是有8个结点的树,其中A是根,其余结点分成2个互不相交的子集:

T1={B,D},T2={C,E,F,G,H};T1和T2都是根A的子树,且本身也是一棵树。

【设计方案】1.创建二叉树(可从键盘输入各结点的

 

值)2.按某种方式对二叉树进行遍历

 

3.树型结构是一种非常重要的非线性结构。

树在客观

 

世界是广泛存在的,在计算机领域里也得到了广泛的应用。

 

在编译程序里,也可用树来表示源程序的语法结构,在数据

 

库系统中,数形结构也是信息的重要组织形式。

 

4.节点的有限集合(N大于等于0)。

在一棵非空数里:

 

(1)、有且仅有

 

一个特定的根节点;

(2)、当N大于1时,其余结点可

 

分为M(M大于0)个互不相交的子集,其中每一个集合又是

 

一棵树,并且称为根的子树。

树的定义是以递归形式给出的。

 

5.二叉树是另一种树形结构。

它的特点是每个结点最

 

多有两棵子树,并且,二叉树的子树有左右之分,其次序

 

不能颠倒。

 

从二叉树的递归定义可知,一棵非空的二叉树由根结点

 

及左、右子树这三个基本部分组成。

因此,在任一给定结点

 

上,可以按某种次序执行三个操作:

(1)访问结点本身(N),

 

(2)遍历该结点的左子树(L),(3)遍历该结点的右子树

 

(R)。

以上三种操作有六种执行次序:

 

NLR、LNR、LRN、NRL、RNL、RLN。

【详细设计】本程

 

序源代码如下:

/*源程序*/

 

/*Note:

YourchoiceisCIDE*/#include""#include

 

#include#include#defineMax20typedefchar

 

DataType;#defineMaxStackSize50usingnamespacestd;

 

typedefstructNode{DataTypedata;

 

structNode*leftChild;

 

structNode*rightChild;

 

}BiTreeNode;

 

typedefBiTreeNode*DataType2;typedefstruct{DataType2stack[MaxStackSize];

 

篇四:

数据结构与数据库实习报告模板

 

《数据结构与数据库》课程设计报告要求

1、报告正文主要包含以下内容:

 

①课程设计目的②课程设计所用设备③课程设计心

 

得体会

 

④课程设计中存在的问题、解决方法及进一步的想法等

 

2、附件报告要求A4纸打印,左侧装订。

3、附件报告内容

 

排版格式要求:

 

①中文采用小四号字体,西文采用TimesNewRoman字

 

体;②行间距:

固定值18磅,段前段后0行;③每段前

 

开头空两个格(两个汉字大小);

 

④报告中有截图的,要对截图进行解释说明,并标注图

 

号。

4、报告提交要求:

 

①报告提交打印版和电子版(电子版,班长按照不同分

 

组收好后,刻一张盘交给到指导老师),字数、格式都要符

 

合要求,不能抄袭别人的报告,一经发现,本周成员的实习

 

成绩为“不及格”;

 

②本次课程设计所涉及到的数据库以及编写的程序均

 

要求同学自身保管,不用上交,保管期限至少两年,日后有

 

可能会随时调阅。

 

③报告(电子版、打印版)提交截止日期:

XX年12月

 

31日

 

注:

以下红色字体标注内容在打印是删除即可。

 

实习报告

 

实习名称:

 

系部名称:

专业班级:

学生姓名:

学号:

指导教

 

师:

 

黑龙江工程学院教务处制

 

数据结构与数据库课程设计附件:

XXXXX管理系统的设计与实现

 

年月日

 

1引言

 

篇五:

数据结构实习报告数据结构实习报告

 

姓名:

吴加剑班级:

114102学号:

XX1000094学院:

 

信息工程学院

 

第一题:

软件压缩/解压缩软件Szip

 

(Huffman算法及应用)

 

一.需求规格说明:

 

问题:

利用哈夫曼编码进行对已经存在的文件进行重新

 

编码,也就是压缩,然后再对该文件进行解码,即解压。

 

二.总体分析与设计

 

(1)设计思想:

 

存储结构主要是采取动态分配内存的方法用数组进行

 

存储,在进行压缩的时候写进文件的表头是自己定义的结构

 

体,我把码长在0-8之间,8-16之间,16-32之间的分别定

 

义了结构体,这三种结构体都具备data(即ASCII码值),码长,不同的是记录哈夫曼编码的指针类型,根据码长的不

 

同指针类型分别为BYTE类型,WORD类型,unsignedint类型。

主要的算法思想是Huffman算法思想和移位,拼接

(2)设计表示:

我设计的是先读出需要压缩的文件,然后利用哈弗曼将其重新

 

编码从而达到压缩的目的,解压缩则刚好相反。

 

(3)详细设计表示:

 

主要算法框架是:

先读一遍文件,统计出每个ASCII码

 

值的频率,并将不

 

为0的频率当作参数来建立Huffman树,然后获得他们

 

的Huffman编码,码长和ASCII值,把码长在0-8之间的写在一起,8-16之间的写在一起,16-32之间的写在一起,然后写进文件,这就是表头。

然后再读一遍原文件,一个字节

 

一个字节的读,然后将他们拼成32位写进一个新的文件,这就是压缩后的文件。

解码的时候先从压缩的文件中将表头读出来,然后再依次读32位,根据表头信息来进行解码。

 

三.编码

 

首先比较困难的是Huffman传参数的下标,我是从0开始的,而书上的函

 

数代码参数下标是从

1开始的,这个问题比较好解决,

只要将建Huffman树的函数中有一个地方的数组下标减

1就

可以了。

第二个问题是有很多

ASCII码的频率为0,此时需

要将它们从数组中删除,下面的一个问题比较难解决,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

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

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