数据结构实习报告33页docWord格式.docx

上传人:b****4 文档编号:16407444 上传时间:2022-11-23 格式:DOCX 页数:25 大小:105.87KB
下载 相关 举报
数据结构实习报告33页docWord格式.docx_第1页
第1页 / 共25页
数据结构实习报告33页docWord格式.docx_第2页
第2页 / 共25页
数据结构实习报告33页docWord格式.docx_第3页
第3页 / 共25页
数据结构实习报告33页docWord格式.docx_第4页
第4页 / 共25页
数据结构实习报告33页docWord格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据结构实习报告33页docWord格式.docx

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

数据结构实习报告33页docWord格式.docx

};

classList{

public:

List(){first=newLinkNode;

}

List(constintx){first=newLinkNode(x);

List(List&

L);

~List(){

MakeEmpty();

deletefirst;

LinkNode*Search(intx);

LinkNode*Locate(inti);

LinkNode*GetHead()const{returnfirst;

intGetData(inti);

voidDeleteRepeatedElem();

voidInput();

voidDisplay();

List&

operator=(List&

private:

LinkNode*first;

List:

:

List(List&

L)

{

intval;

LinkNode*srcPtr=L.GetHead();

LinkNode*desPtr=first=newLinkNode;

while(srcPtr->

link!

=NULL){

val=srcPtr->

link->

data;

desPtr->

link=newLinkNode(val);

desPtr=desPtr->

link;

srcPtr=srcPtr->

}

link=NULL;

}

三、显示详细设计

intmain(intargc,char*argv[])

ListL1;

intd;

L1.Input();

L1.Display();

L1.DeleteRepeatedElem();

L1.Insert(5,55);

L1.Remove(6,d);

ListL2;

L2.Input();

L2.Display();

L1.MergeList(L2);

return0;

四、运行结果显示

五、调试分析:

本次试验中刚开始不知道怎么调试,总是出现各种各样的错误,不知道怎么回事,大部分都是通过XX来了解那里出现错误,也同时对bool函数进行深入的了解,bool函数在我们学C++时候,老师没有讲,缺乏使用的经验

六、思考与小结

在本次试验中我明白链表的的类的定义,链表的插入,链表的定位,链表的排序等函数的写法,但是如果让我自己不参考课本还是写不出来,但是能明白代码的含义及程序运行的顺序,基本的出错修正,有时候也不知道出现什么问题,没有错误,但是总是运行不了,到最后通过XX才明白是构造函数出现错误了,这样的错误在我们学习C++的时候也出现过,但是好像在visualstudio2010没有出现类似的错误,但是也没有找出根本原因,就放在那里了,

实验二顺序栈的自定义类设计

本次程序设计要求建立一个栈的顺序存储结构类,以及实现线性表所需求的各种功能。

对栈的操作有:

(3)以“ABCDEFG”的字符串顺序进栈;

以合适顺序出栈得到序列“CDBAGFE”;

取栈顶元素得到‘F’;

进栈直到栈满和出栈直到栈空,检验对这两种情形的正确判断和处理

template<

classT>

classstack

stack(){};

voidinit()

tos=0;

voidpush(Tch)

{

if(tos>

=0&

&

tos<

size)

{

stck[tos]=ch;

tos++;

if(size-1==tos)

{

cout<

<

"

nowthestackisfull"

endl;

}

Tpop()

if(tos>

0)

tos--;

returnstck[tos];

else

cout<

nowthestackisempty"

return0;

virtual~stack(){};

Tstck[size];

inttos;

三、详细设计

intmain(intargc,char*argv[])

stack<

char>

s;

inti;

s.init();

s.push('

A'

);

B'

C'

D'

E'

F'

G'

for(i=0;

i<

7;

i++)

cout<

pops:

s.pop()<

cout<

==================================="

1;

3;

return0;

四、调试结果

五、调试分析

刚开始不知道怎么回事,就是调试不出来,虽然栈的压入和弹出的模式很清晰,但是类的建立,栈的建立,溢出处理,读取栈顶元素,新元素的进栈,计算栈中元素的个数,由于写的代码有点少,所以很容易就调试出现如期的结果

六、思考与小结

一直不明白模板类的作用,但是也没有过多关注模板类的作用,后来越来越多的同学开始讨论模板类,都都不明白怎么回事,后来通过XX了解了一些,但是还是不是很清楚,这是学编程以来从来没有接触过的东西,最后才明白这是在类的建立的时候使用的

实验三字符串的操作类设计

本次程序设计要求建立字符串的操作类,

(3)用堆分配存储表示串,实现串的比较、复制、串的连接,取子串、子串匹配定位和串替换等基本操作。

测试数据示例:

以“abcde”构造一个串s1,以“gabcdef”构造另一个串s2;

比较s1和s2是否相等;

在s2中定位s1子串;

复制s2串并连接在s1串后。

二、概要设计:

classAstring

char*ch;

inttruLength;

intMaxsize;

Astring(intsz=Max);

Astring(constchar*sjs);

Astring(constAstring&

ob);

intLength()const

returntruLength;

intoperator==(Astring&

ob)const

returnstrcmp(ch,ob.ch)==0;

intoperator!

=(Astring&

ob)const

returnstrcmp(ch,ob.ch);

Astring&

operator()(intpos,intlen);

operator=(Astring&

operator+=(Astring&

bb);

charoperator[](inti);

intFind(Astring&

pat)const;

voidstrcomp(Astring&

voidplay();

virtual~Astring();

二、详细设计

Astring:

Astring(intsz)

this->

Maxsize=Max;

ch=newchar[Maxsize-1];

truLength=0;

ch[0]='

\0'

;

Astring(constchar*sjs)

intlength=strlen(sjs);

Maxsize=(length>

Max)?

length:

Max;

truLength=length;

strcpy(this->

ch,sjs);

Astring(constAstring&

ob)

Maxsize=ob.Maxsize;

truLength=ob.truLength;

ch,ob.ch);

Astring&

Astring:

operator()(intpos,intlen)

inti,j;

Astringtemp;

if(pos<

0||pos+len-1>

Maxsize||len<

temp.truLength=0;

temp.ch[0]='

else

if(pos+len-1>

=truLength)

len=truLength-pos;

temp.truLength=len;

for(i=0,j=pos;

len;

i++,j++)

temp.ch[i]=this->

ch[j];

temp.ch[i]='

return*this;

operator=(Astring&

this->

Maxsize=ob.Maxsize;

strcpy(this->

operator+=(Astring&

if(this->

truLength+ob.truLength<

=this->

Maxsize)

Maxsize=Maxsize;

truLength=this->

truLength+ob.truLength;

strcat(this->

return*this;

char*tem=this->

ch;

Maxsize=Maxsize*2;

ch=newchar[Maxsize];

tem[0]='

ch,tem);

deletetem;

charAstring:

operator[](inti)

if(i<

0||i>

truLength)

yourintisovertherange"

exit

(1);

returnthis->

ch[i];

intAstring:

Find(Astring&

pat)const

inttem=0,tim=-1,i;

this->

truLength-pat.truLength;

for(intj=0,k=0;

j<

truLength;

j++,k++)

if(pat.ch[j]==this->

ch[k])

{

tem++;

else

continue;

if(pat.truLength==tem)

tim=i;

tim=-1;

returni;

voidAstring:

strcomp(Astring&

intt=strcmp(this->

if(t==0)

s1=s2"

if(t<

s2<

s1"

s2>

play()

ch<

Astrings1("

abcdef"

Astrings2("

gabcdefh"

s2.strcomp(s1);

intstrstr=s2.Find(s1);

cout<

strstr<

==========================="

s1.play();

s2.play();

s1+=s2;

三、调试结果:

四、调试分析:

字符串的操作,exit

(1);

这个地方总是出现错误,也不知道怎么回事,在别人的程序里没有问题但是在我的程序里总是运行错误,这个程序里的使用的只是比较多,比如说字符的重载,

This指针,到现在也没明白

五、思考与小结:

通过本次试验,我明白字符串的操作在实例中的作用比如“:

美国职业篮球赛组织叫做全国篮球协会(theNationalBasketballAssociation,简称NBA)。

每年夏初,协会举办称为theWorldChampionship(即NBA决赛)的年度锦标赛。

分析提取英文文本格式:

”;

在身边的应用很广。

但是里面有好多不明白有些代码,写的有些复杂,看不明白,但是把老师的代码看了一遍,改了一些就把作业交上了

实验四树和二叉树的自定义类的设计

本次程序设计要求建立树的结构及非线性特点,递归特点和动态性

(3)实现二叉树的遍历,实现先序、中序和后序递归遍历算法;

利用栈实现二叉树先序、中序遍历的非递归算法。

以层序遍历序列为abcdefghijklmn构造一棵二叉树:

分别输出其先序、中序和后序遍历结果;

structTreeNode

Tdata;

TreeNode<

T>

*lchild,*rchild;

():

lchild(NULL),rchild(NULL){}

(Tx,TreeNode<

*l=NULL,TreeNode<

*r=NULL):

data(x),lchild(r),rchild(r){}

classBinaryTree

*root;

Tcanstop;

BinaryTree():

root(NULL){}

BinaryTree(Tvalue):

root(NULL),canstop(value){}

voidCreatTree(TreeNode<

*&

subTree);

BinaryTree(BinaryTree<

s);

voidpreOrder(TreeNode<

*subTree);

voidinOrder(TreeNode<

voidpostOrder(TreeNode<

BinaryTree<

*Copy(TreeNode<

*bge);

voiddestroy(TreeNode<

*subTree);

virtual~BinaryTree();

请输入内容!

*TS1=newBinaryTree<

('

#'

TS1->

CreatTree(TS1->

root);

前序遍历"

preOrder(TS1->

中序遍历"

inOrder(TS1->

后续遍历"

postOrder(TS1->

从二叉树类的定义,类的前序遍历、中序遍历、后序遍历、根据书本上的代码,一个一个敲上去没有出现太大的问题,有时候就会出现一些写代码过程中的常见错误

在我们二级考试中、曾有一些关于二叉树的知识但是似懂非懂,把知识点记住了,有很多不是很明白,二叉树的性质中深度与结点的关系,现在基本明白推理过程,在二叉树的构造函数中BinTreeNode<

*lch,BinTreeNode<

*rch,Titem仍然不明白

实验五图的最短路径算法设计

一、需求分析

最短路径的概念,掌握求最短路径的方法(Dijkstra算法或Floyd算法)。

(3)建立一个包含6个结点的带权有向图,并求顶点V0到其它顶点的最短路径。

二、概要设计

classGraph{//图的类定义

intn;

intEdge[NumVertices][NumVertices];

intdist[NumVertices];

intpath[NumVertices];

intS[NumVertices];

Graph(){

n=0;

for(inti=0;

i<

NumVertices;

dist[i]=-1;

path[i]=-1;

S[i]=-1;

for(intj=0;

j<

j++)

Edge[i][j]=0;

voidShortestPath(constint);

voidPrintShortestPath(constintv);

voidBellmanFord(constintv);

friendistream&

operator>

>

(istream&

strm,Graph&

g);

主函数:

Graphg;

依次输入图的顶点数和邻接矩阵元素

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

当前位置:首页 > PPT模板 > 图表模板

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

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