数据结构实习报告
第1篇:数据结构实习报告
附件:
实习报告格式,如下:
数据结构实习报告
班级: 姓名:
xxx(20121514101)
xxx(20121514101)
xxx(20121514101)
指导教师:
日期:
题目
一、问题描述(把你所选的题目及要求说一下)
二、概要设计(抽象数据类型定义)
三、详细设计(主要算法和函数间的调用关系)
四、调试分析(调式过程中出现的问题及如何改正)
五、心得体会(组内成员的分工及实习期间的体会)
六、用户手册(系统的使用方法介绍)
可参照习题集上的实习报告格式。
第2篇:数据结构实习报告
数据结构实习报告
班级:13软件二班
姓名:殷健 学号:1345536225
子集和数问题
1:问题描述
子集和数问题1:子集和问题的为〈W,c〉。其中,W={w1,w2,...,wn}是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得∑W1=c∑W(0
2:问题分析
程序中设计了函数void computeSumofSub(int s,int k,int r),其意义是从第k项开始,如果s(已经决策的和数)和w[k](当前元素)之和为和数,就把结果输出来,否则如果s与,w[k],w[k+1]之和小于和数,则调用computeSumofsub(s+w[k],k+1,r-w[k]),意为选择此结点的左分支,再判断s和后面所有元素之和是否不小于M(所有的加起来都小,必定无解),并且s+w[k+1]M,也是无解),若条件符合即调用computeSumofSub(s,k+1,r-w[k]),即选择当前结点的右分支。
算法展示:
#include using namespace std;#include #include #define M 50 cla SumOfSub{ private: int w[M];
int m;int x[M];public: SumOfSub(int a[], int b, int n){
for(int i=0;i=m&&s+w[k+1]
};void main(){ int sum=0;int w[M];srand((unsigned)time(NULL));
for(int i=0;i
} cout
cout
} cout>m;sum=m*sum;cout
复杂性分析: 对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是n*2^n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。其它说明: 按书中所讲的约束条件,程序中所有变量都是整型,输入的各元素要从小到大输入,而且不能有重复的元素。若是想要无序输入,可以程序中加入程序1.c的归并排序算法,对输入的数组排序即可。
拓展一
问题描述: 子集和数问题拓展一:子集和问题的为〈W,c,p〉。其中,W={w1,w2,...,wn}是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得∑W1=c∑W(0
问题分析:
增加一个数组p,使得p的每个元素与w对应元素关系为pi=Wi+10;最后结果W子集中元素个数越多,则p和最大,但也可以将每个符合条件子集对应P集合的元素和计算出做个比较,然后输出最大的再对应原W子集。
算法演示
#include using namespace std;#include #include #define M 50 cla SumOfSub{ private: int w[M];int p[M];int m;int x[M];
int N[M];int max;int j;public: SumOfSub(int a[], int b, int n){
max=0;j=0;
for(int i=0;i
w[i]=a[i];
p[i]=a[i]+10;
}
m = b;
x[0]=n;} void computeSumOfSub(int s, int k, int r){ x[k] = 1;if(s+w[k] == m){ printResult(k);cout
} else if(s+w[k]+w[k+1] =m&&s+w[k+1]
int S=0;int i;
cout
for(i=0;i
S=S+p[i];
cout
}
cout
cout
if(S>max){
max=S;
int J=0;
for(i=0;i
if(x[i]==1){
N[J]=w[i];
J++;
}
}
j=J;
} } void special(){
cout
for(int i=0;i
cout
}
cout
for(int i=0;i
w[i]=rand();
if(w[i]==0){
w[i]=rand();
}
sum=sum+w[i];} cout
cout>m;sum=m*sum;cout
r += w[i];} sumOfSub.computeSumOfSub(0, 0, r);
sumOfSub.special();} 运行结果
复杂性分析
对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是n*2^n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。
拓展二
问题描述
子集和数问题拓展一:子集和问题的为〈W,c,P〉。其中,W={w1,w2,...,wn}是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得∑W1=c∑W(0
问题分析
增加一个数组随机数组P,每个符合条件子集对应P集合的元素和计算出做个比较,然后输出最大的再对应原W子集。
算法演示
#include using namespace std;#include #include #define M 50 cla SumOfSub{ private: int w[M];int p[M];int m;
int x[M];int N[M];int max;int j;public: SumOfSub(int a[], int b, int n){
max=0;
j=0;
cout
for(int i=0;i
w[i]=a[i];
p[i]=rand();
cout
}
cout
m = b;
x[0]=n;} void computeSumOfSub(int s, int k, int r){ x[k] = 1;if(s+w[k] == m){ printResult(k);cout
} else if(s+w[k]+w[k+1] =m&&s+w[k+1]
int S=0;int i;
cout
for(i=0;i
S=S+p[i];
cout
}
cout
cout
if(S>max){
max=S;
int J=0;
for(i=0;i
if(x[i]==1){
N[J]=w[i];
J++;
}
}
j=J;
} } void special(){
cout
for(int i=0;i
cout
}
cout
for(int i=0;i
w[i]=rand();
if(w[i]==0){
w[i]=rand();
}
sum=sum+w[i];} cout
cout>m;sum=m*sum;cout
r += w[i];} sumOfSub.computeSumOfSub(0, 0, r);
sumOfSub.special();}
运行结果
复杂性分析
对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是n*2^n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。
第3篇:数据结构实习报告
一、概述软件开发的流程
二、回顾C语言的基本语法:
1、常量(类型)
2、变量(类型、定义)
3、表达式(例子:三位数的拆分)
4、控制语句(if条件语句,例子:饿了吗?for循环语句,例子:做好事问题求解)
5、数组(例子:猜数字游戏)
三、学生成绩计算系统
做好事问题求解:
某学校为表扬好人好事需核实一件事,老师找了A、B、C、D三个学生,A说:“不是我。”。B说:“是C。”。C说:“是D。”。D说:“C胡说”。这四个人中三个人说了实话。请问:这件好事是谁做的?
#include "Stdio.h" #include "Conio.h"
void main(void){ char thisman;/*定义变量用来保存做好事的人*/ int sum=0;/*求和变量*/ /*循环枚举做好事的人*/ for(thisman='A';thisman
} getch();} 猜数字:
在计算机上设置一个没有重复数字的4位数,不能让猜得人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。
接着猜的人再根据出题者的几A几B继续猜,直到猜中为止。
次数限制:
有的时候,这个游戏有猜测次数上的限制。根据计算机测算,这个游戏,如果以最严谨的计算,任何数字可以在7次之内猜出。而有些地方把次数限制为6次或更少,则会导致有些数可能猜不出来。而有些地方考虑到人的逻辑思维难以达到计算机的那么严谨,故设置为8次甚至10次。也有的没有次数上的限制。我们今天要做的这个游戏就是设定次数为8次。
#include "Stdio.h" #include "Conio.h" void gue(int b[])/*猜数字游戏进行猜数的函数,采用数组作为参数*/ { int i=0,j=0,s=0,x=0,k1=0,k2=0;/*i、j、s用于进行循环,x用记录猜
数的次数,k1用于记录位置相同且数相同的数字个数、k2记录数相同的数字个数*/ int a[4];while(1){ x++;printf("di %d ci shu ru:",x);scanf("%d",&j);/*输入要猜的数放在变量j中*/ for(i=3;i>=0;i--)/*将输入的4位数进行拆分放到数组a中*/ { a[i]=j%10;j=j/10;} for(i=0;i=0;i--)/*将四位数拆分并按高低位存放在数组b中*/ { b[i]=num%10;num=num/10;} printf("ok pre any key");getch();/*等待*/ clrscr();/*清屏*/ } int main(void){ int b[4],num,i,ch=0;while(1)/*条件为1的无限循环作为软件运行的主体,等待退出命令*/ { printf("****menu****n");printf("set number input 1n");printf("gue number input 2n");printf("exit input 3n");printf("input your select items:");scanf("%d",&ch);if(ch==1)/*选择变量为1调用设置被猜数字函数*/ { set_num();} if(ch==2)/*选择变量为2调用猜数游戏过程函数*/ { gue(b);} if(ch==3)/*选择变量为3退出循环结束游戏*/ { break;} }
getch();return 0;}
第4篇:数据结构实习报告
数据结构课程设计的实习报告怎么写呀,请求做过课设的同学发一篇范文过来谢谢-_-规范实习报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容:
1、需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(1)输入的形式和输入值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确地输入及其输出结果和含有错误的输入及其输出结果,数据结构实习报告。
2、概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3、详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。
4、调试分析内容包括:(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进思想;(3)经验和体会等,实习报告《数据结构实习报告》。
5、用户使用说明说明如何使用你编写的程序,详细列出每一步操作步骤。
6、测试结果列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。
7、附录题目:约瑟夫-实习报告尺寸:约瑟夫-实习报告.doc目录:
一、需求分析
二、概要设计
三、程序具体设计及函数调用关系
四、调试分析
五、测试结果原文:实习报告题目:约瑟夫(Joseph)问题的一种描述是:编号为1,2,.,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个开始重新从1报数,如此下去,直至年有人全部出列为止。试设计一个程序求出出列顺序。班级:姓名:学号:完成日期:
一、需求分析1.本演示程序中,利用单向循环链表存储结构存储约瑟夫环数据(即n个人的编号和密码)。2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示"提示信息"之后,由用户在键盘上输入演示程序中需要输入的数据,运算结果显示在其后。3.程序执行的命令包括:1)构造单向循环链表;2)4.测试数据m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序为6,1,4,7,2,1,3,5)。
二、概要设计1.单向循环链表的抽象数据类型定义为:ADT List{数据对象:D={ai|ai∈正整数,I=1,2,.,n,n≥0}数据关系:R1={ai-1,ai|,ai-1,ai∈D,I=1,2,.,n}基本操作:Init List(&L)操作结果:构造一个空的线性表L。List Insert(&L,i,e)初始条件:线性表L已存在,1≤i≤List Length(L)+1.操作结果:在L中第i个位置之前插入新的数据无素e,L长度加1。List Delete(&L,i,&e)初始条件:线性表L存在非空,1≤i≤List Length(L).操作结果:删除L的第i个元素,并用e返回其值,L长度减1。2.程序包含四个模块:1)主程序模块:void main(){.
第5篇:数据结构实习报告
一、需求分析
1、程序所实现的功能;
2、程序的输入,包含输入的数据格式和说明;
3、程序的输出,程序输出的形式;
4、测试数据,如果程序输入的数据量比较大,需要给出测试数据;
5、合作人及其分工
二、设计说明
1、主要的数据结构设计说明;
2、程序的主要流程图;
3、程序的主要模块,要求对主要流程图中出现的模块进行说明
4、程序的主要函数及其伪代码说明 (不需要完整的代码);
5、合作人设计分工
三、上机结果及体会
1、合作人编码分工
2、实际完成的情况说明(完成的功能,支持的数据类型等);
3、程序的性能分析,包括时空分析;
4、上机过程中出现的问题及其解决方案;
5、程序中可以改进的地方说明;
6、程序中可以扩充的功能及设计实现假想;说明:
1、如果程序比较大,可以将设计说明分为概要设计和详细设计两部分。概要设计主要负责程序的流程、模块、抽象数据类型设计;详细设计负责程序的数据类型定义和主要函数的说明。
2、设计说明中,不需要写出代码或者模块的详细代码,只需要写出主要函数的伪代码说明。
第6篇:数据结构实习报告
数据结构第六次作业p134
——11411203张玉
24.
template
void SeqQueue::EnQueue(const T& x){//插入函数
if(IsFull()==true){
maxSize=2*maxSize;
elements[rear]=x;
rear=(rear+1)%maxSize;
}
elements[rear]=x;
rear=(rear+1)%maxSize;
};
template
bool SeqQueue::DeQueue(const T& x){//删除函数if(IsEmpty()==true)return false;
if(rearn
maxSize=maxSize/2;
x=elements[front];
front=(front+1)%maxSize;
}
x=elements[front];
front=(front+1)%maxSize;
return true;
};
29.
// 利用优先级队列实现栈和队列
#include
template cla PQueue;//前视的类定义
template cla Stack;
template cla Queue;//优先级队列结点类的定义 template
cla PQueueNode
{
friend cla PQueue;//PQueue类作为友元类定义friend cla Stack;
friend cla Queue;
public:
PQueueNode(T &value, int newpriority, PQueueNode priority(newpriority), link(next){}//构造函数 * next):data(value),virtual T GetData(){ return data;}//取得结点数据
virtual int GetPriority(){ return priority;}//取得结点优先级
virtual PQueueNode * GetLink(){ return link;}//取得下一结点地址
virtual void SetData(T& value){ data = value;}//修改结点数据
virtual void SetPriority(int newpriority){ priority = newpriority;} //修改结点优先级
virtual void SetLink(PQueueNode * next){ link = next;}//修改指向下一结点的指针 private:
T data;//数据
int priority;//优先级
PQueueNode *link;//链指针
};
//优先级队列的类定义
template
cla PQueue
{
friend cla Stack;
friend cla Queue;
public:
PQueue():front(NULL), rear(NULL){}//构造函数
virtual ~PQueue(){ MakeEmpty();}//析构函数
virtual void Insert(T &value, int newpriority);//插入新元素value到队尾 virtual T Remove();//删除队头元素并返回 virtual T Get();//读取队头元素的值 virtual void MakeEmpty();//置空队列
virtual int IsEmpty(){ return front == NULL;}//判队列空否private:
PQueueNode *front, *rear;//队头指针, 队尾指针
};template
void PQueue::MakeEmpty()
{
//将优先级队列置空
PQueueNode *q;
while(front!= NULL)//链不空时, 删去链中所有结点
{
//循链逐个删除
q = front;
front = front->link;
delete q;
}
rear = NULL;//队尾指针置空
}template
void PQueue::Insert(T &value, int newpriority)
{
//插入函数
PQueueNode *q = new PQueueNode(value, newpriority, NULL);if(IsEmpty())
front = rear = q;//队列空时新结点为第一个结点
else
{
PQueueNode *p = front, *pr = NULL;//寻找q的插入位置
while(p!= NULL && p->priority >= newpriority)//队列中按优先级从大到小链接{
pr = p;
p = p->link;
}
if(pr == NULL)
{
//插入在队头位置
q->link = front;
front = q;
}
else
{
q->link = p;
pr->link = q;//插入在队列中部或尾部
if(pr == rear)
rear = q;
}
}
}
//删除队头元素并返回
template
T PQueue::Remove()
{
if(IsEmpty())
return NULL;PQueueNode *q = front;
front = front->link;//将队头结点从链中摘下
T &retvalue = q->data;
delete q;
if(front == NULL)
rear = NULL;return retvalue;
}
//读取队头元素的值
template
T PQueue::Get()
if(IsEmpty())
return NULL;
else
return front->data;
}
//(1)栈的定义与实现
template
cla Stack:public PQueue
{
//栈类定义
public:
Stack():PQueue(){} //构造函数
void Insert(T & value);//插入新元素value到队尾
};template
void Stack::Insert(T & value)
{
//插入函数
PQueueNode *q = new PQueueNode(value, 0, NULL);if(IsEmpty())front = rear = q;//栈空时新结点为第一个结点
else
{
//插入在前端
q->link = front;
front = q;
}
}//--------------------------Queue //(2)队列的定义与实现
template
cla Queue:public PQueue
{
//队列类定义
public:
Queue():PQueue(){}//构造函数
void Insert(T & value);//插入新元素value到队尾
};template
void Queue::Insert(T & value)
{
//插入函数
PQueueNode *q = new PQueueNode(value, 0, NULL);
if(IsEmpty())
front = rear = q;//队列空时新结点为第一个结点
else
rear = rear->link = q;//插入在队尾位置
void main(){
Stack aStack;Queue aQueue;
int n = 1;
aStack.Insert(n);aQueue.Insert(n);}
第7篇:数据结构实习报告
精选范文:数据结构实习报告(共2篇)一、需求分析1、程序所实现的功能;2、程序的输入,包含输入的数据格式和说明;3、程序的输出,程序输出的形式;4、测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、合作人及其分工二、设计说明1、主要的数据结构设计说明;2、程序的主要流程图;3、程序的主要模块,要求对主要流程图中出现的模块进行说明4、程序的主要函数及其伪代码说明(不需要完整的代码);5、合作人设计分工三、上机结果及体会1、合作人编码分工2、实际完成的情况说明(完成的功能,支持的数据类型等);3、程序的性能分析,包括时空分析;4、上机过程中出现的问题及其解决方案;5、程序中可以改进的地方说明;6、程序中可以扩充的功能及设计实现假想;说明:1、如果程序比较大,可以将设计说明分为概要设计和详细设计两部分。概要设计主要负责程序的流程、模块、抽象数据类型设计;详细设计负责程序的数据类型定义和主要函数的说明。2、设计说明中,不需要写出代码或者模块的详细代码,只需要写出主要函数的伪代码说明。
[数据结构实习报告(共2篇)]篇1:数据结构实训报告
《数据结构》
课程设计报告
题 目:
班 级:
姓 名:
学 号:
指导教师:
实现两个链表的合并 08计管(2)班 肖丽娜 2010 年 6 月 17 日
目录
一、课程设计的性质、目的及要求 ············································· 3 一、课程设计性质 ···································································· 3 二、设计目的 ············································································ 3 三、设计要求 ············································································ 3 二、任务描述 ················································································· 3 三、软件环境 ················································································· 4 四、算法设计思想及流程图 ························································· 4 一、算法设计思想 ···································································· 4 二、流程图 ················································································ 5 五、源代码 ····················································································· 6 六、运行结果 ················································································· 9 七、收获及体会 ··········································································· 10
一、课程设计的性质、目的及要求
一、课程设计性质
性质:数据结构设计是《数据结构》课程的实践环节,也是我院各专业必修的计算机技术基础课程之一。
二、设计目的目的:课程设计为学生提供了一个既动手又动脑,独立实践的机会,学生将课本上的理论知识和实际有机的结合起来,锻炼学生分析、解决较复杂问题的能力,本次课程设计,也是为了锻炼我们应用编程语言的语法规则和已经掌握的一些较为简单的算法,自己解决一个较简单的课题,初步积累编程经验。提高学生独立编写大编程的能力。
三、设计要求
计算机科学是一门研究数据表示和数据处理的科学。数据是计算机化的信息,是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算,数据处理,过程控制,还是对文件的存储和检索及数据库技术的应用,都是对数据进行加工处理的过程。
希望通过学习掌握程序设计的方法与编程技术,我们能学会良好的程序设计风格,为在计算机不同领域的应用打下坚实的基础。希望通过本次的学习,我们能利用计算机解决实际题。与此同时,希望能通过此次的实训来提高我们的思维能力,促进我们的综合应用能力和我们的专业素质。
二、任务描述
实现两个链表的合并
基本功能要求: 1、建立两个链表a和b,链表元素的个数没别为m和n个。
2、假设元素分别为(x1,x2,···xm),和(y1,y2,···yn)。把他们合并成一个线性表c,使得:
当m>=n时,c=x1,y1,x2,y2,···xn,yn,···xm 当n>m时,c=y1,x1,y2,x2,···ym,xm,···,yn 输出线性表c 3、用直接插入排序法对c进行升序排序,生成表d,并输出表a ,b ,c ,d。
三、软件环境
编辑工具: turbo c2.0
功能介绍:
turbo c2.0是一个快捷、高效的编译程序,同时还有一个易学、易用的集成开发环境。使用turbo c2.0无需独立地编辑、编译和连接程序,就能建立并运行c语言程序。因为这些功能都组合在turbo 2.0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。
四、算法设计思想及流程图
一、算法设计思想 1、定义链表的结构 [数据结构实习报告(共2篇)] typedef struct { int data[maxsize];int top;}list;2、创建链表a,b,c,d,由于这链表是自己创立的,我们首先要对他
们进行申请存储空间,首先我们就定义头文件#include,用malloc(sizeof())函数来现实,这是申请链表存储空间的标志.3、用指针top的移动来实现对链表a,和b进行数据的输入输出,再
进行链表长度的比较,在用直接插入法对a和b中的数据查到c中,当m>=n的时候,先插a的元素,再插入b的元素
c->data[c->top]=a->data[j];
j=j+1;c->top=c->top+1;c->data[c->top]=b->data[k];k=k+1;c->top=c->top+1;当n>m的时候,先插b的元素,在插入a的元素
c->data[c->top]=b->data[j];j=j+1;c->top=c->top+1;c->data[c->top]=a->data[k];k=k+1;c->top=c->top+1;4、用冒泡排序法对c中元素进行排序生成表d,由于要进行升序排序,所以只需比较d->data[j]data[j-1],再输出d->data[j],移动指针d->top,每进行一次输出,指针就移动一次d->top+1,直到c中元素都排序完,最后输出d。
5、打印链表a,b,c,d。
二、流程图
下页篇2:数据结构实习报告
测绘与国土信息工程学院
实验态度:
实验成果:
实验报告:
《数据结构》课程 实验报告 姓 名: 学 号: 班 级: 成 绩:、认真 2、良好 3、一般 4、不认真、优秀 2、可信 3、一般 4、不真实、清晰完整 2、比较完整 3、不清晰 教师签名:111
交报告日期: 2011年 7 月 1日
目录
实验一 线性表的链表实现类的设计...4 实验二 顺序栈的自定义类设计.8 实验三 字符串的操作类设计 12 实验四 树和二叉树的自定义类的设计 19 实验五 图的最短路径算法设计.........22 实验六 自定义类应用综合设计.........27
实验一 线性表的链表实现类的设计
一、需求分析
本次程序设计要求建立一个以链表为储存方式的线性表,以及实现线性表所需求的各种功能。对线性表的操作有:
(1)输入形式为从键盘输入,用户根据界面的提示从键盘直接输入所对应的数即可。输入的值要求为整数类型,用户输入其它类型的数据时(例如字符串)会产生不可预测的错误。
(2)输出的界面为dos窗口,系统按照用户输入的数据类型,将会把相应的输出结果显示到界面上。
(3)程序可以建立一个以链表形式储存的线性表,对线性表可以进行查找、删除、插入、构造、销毁和获取链表长度的操作。(4)以l1={0, 5, 9, 10, 12, 12, 17, 20, 24}构造链表;找
到重复的 [数据结构实习报告(共2篇)] };cla list{ public: list(){first = new linknode;} list(const int x){first = new linknode(x);} list(list& l);~list(){ makeempty();delete first;}
linknode* search(int x);linknode* locate(int i);linknode* gethead()const {return first;} int getdata(int i);void deleterepeatedelem();void input();void display();list& operator =(list& l);private: linknode* first;};list::list(list& l){ int val;linknode * srcptr = l.gethead();linknode * desptr = first = new linknode;while(srcptr->link!= null){ val srcptr->link->data;desptr->link = new linknode(val);desptr = desptr->link;srcptr srcptr->link;
= = } desptr->link = null;} 三、显示详细设计 int main(int argc, char *argv){ list l1;int d;l1.input();l1.display();l1.deleterepeatedelem();下页
第8篇:数据结构实习报告
希望本文对您有所帮助!
数据结构实习报告
导读:本文是关于数据结构实习报告,希望能帮助到您!
一、需求分析1、程序所实现的功能;2、程序的输入,包含输入的数据格式和说明;3、程序的输出,程序输出的形式;4、测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、合作人及其分工二、设计说明1、主要的数据结构设计说明;2、程序的主要流程图;3、程序的主要模块,要求对主要流程图中出现的模块进行说明4、程序的主要函数及其伪代码说明(不需要完整的代码);5、合作人设计分工三、上机结果及体会1、合作人编码分工2、实际完成的情况说明(完成的功能,支持的数据类型等);3、程序的性能分析,包括时空分析;4、上机过程中出现的问题及其解决方案;5、程序中可以改进的地方说明;6、程序中可以扩充的功能及设计实现假想;说明:1、如果程序比较大,可以将设计说明分为概要设计和详细设计两部分。概要设计主要负责程序的流程、模块、抽象数据类型设计;详细设计负责程序的数据类型定义和主要函数的说明。2、设计说明中,不需要写出代码或者模块的详细代码,只需要写出主要函数的伪代码说明。
