数据结构课程设计报告样本(图的存储与遍历)

破茧成蝶 范文 报告范文
精选回答

数据结构课程设计报告样本(图的存储与遍历)本文简介:这是最后提交的文档资料格式,必须包含几个部分,如果是四到五个人完成要求文档不少于70页,3-4个人完成要求不少于50页。《数据结构》课程设计题目图的存储与遍历学生姓名指导教师学院专业班级完成时间目录(要求自动生成)第一章课程设计目的2第二章课程设计内容和要求2第三章课程设计分析3第四章算法描述4第五

数据结构课程设计报告样本(图的存储与遍历)本文内容:

这是最后提交的文档资料格式,必须包含几个部分,如果是四到五个人完成要求文档不少于70页,3-4个人完成要求不少于50页。

《数据结构》课程设计

图的存储与遍历

学生姓名

指导教师

专业班级

完成时间

录(要求自动生成)

第一章

课程设计目的2第二章

课程设计内容和要求2第三章

课程设计分析3第四章

算法描述4第五章

源代码8第六章

运行结果分析13第七章

结束语15第八章

参考文献15

第一章

课程设计目的

本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求实习者掌握《数据结构》中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。

具体说来,这次课程设计主要有两大方面目的。

一是让实习者通过实习掌握《数据结构》中的知识。对于《图的存储与遍历》这一课题来说,所要求掌握的数据结构知识主要有:图的邻接表存贮结构、队列的基本运算实现、邻接表的算法实现、图的广度优先搜索周游算法实现、图的深度优先搜索周游算法实现。

二是通过实习巩固并提高实习者的C语言知识,并初步了解Visual

C++的知识,提高其编程能力与专业水平。

第二章

课程设计内容和要求

2.1课程设计内容组成员名称和分工(谁负责了哪个部分)

该课题要求以邻接表的方式存储图,输出邻接表,并要求实现图的深度、广度两种遍历。

2.1.1图的邻接表的建立与输出

对任意给定的图(顶点数和边数自定),并且对有向图与无向图都应进行讨论,根据邻接表的存储结构建立图的邻接表并输出之。尽量用图形化的方式输出邻接表。

2.1.2

图的遍历的实现

图的遍历包括图的广度优先遍历与深度优先遍历。对于广度优先遍历应利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)来实现。首先建立一空队列,从初始点出发进行访问,当被访问时入队,访问完出队。并以队列是否为空作为循环控制条件。对于深度优先遍历则采用递归或非递归算法来实现。

2.2

运行环境

该程序的运行环境为Windows

xp系统,Microsoft

Visual

C++6.0版本。

第三章

课程设计分析

3.1图的存储

本课题要求采取邻接表的存储结构。邻接表是一种链式的存储结构,在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(对有向图是以顶点Vi为尾的弧)。每个结点由3个域组成,其中邻接点域(adjvex)指示与顶点Vi邻接的点在图中的位置,链域(nextarc)指示下一条边或弧的结点;数据域(info)存储和边或弧相关的信息,如权值等。

所以一开始必须先定义邻接表的边结点类型以及邻接表类型,并对邻接表进行初始化,然后根据所输入的相关信息,包括图的顶点数、边数、是否为有向,以及各条边的起点与终点序号,建立图的邻接表。此时要分两种情况:有向图与无向图。对于无向图,一条边的两的个顶点,互为邻接点,所以在存储时,应向起点的单链表表头插入一边结点,即终点。同时将终点的单链表表头插入一边结点,即起点。对于有向图,只能向起点的单链表的表头插入一个边结点,即终点。但不能反过来。至于邻接表的输出,由于不了解C++中的绘图操作,故采用for语句输出各结点,并配合一些符号完成邻接表的输出。

3.2

图的遍历

3.2.1

图的深度优先遍历

假设初始状态是图中所有顶点未曾被访问,深度优先遍历可以从图的初始点出发,访问初始点,然后依次从v未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到;若此时仍有顶点未被访问到,则从另一个未被访问的顶点出发,重复上述过程,直至所有点都被访问到为止。这是一个递归的过程。所以在实现深度优先遍历的过程中必须递归调用深度优先搜索函数。而且在深度优先搜索函数中必须设一标志数组以标记结点是否被访问。

具体过程应为:先访问初始点Vi,并标志其已被访问。此时定义一指向边结点的指针p,并建立一个while()循环,以指针所指对象不为空为控制条件,当Vi的邻接点未被访问时,递归调用深度优先遍历函数访问之。然后将p指针指向下一个边结点。这样就可以完成图的深度优先遍历了。

3.2.2

图的广度优先遍历

广度优先搜索遍历类似于树的按层次遍历的过程。假设从图中某顶点v出发,在访问了v之后访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点的邻接点”被访问,直到图中所有已被访问的顶点的邻接点都被访问到。若此时图中尙有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直到图中所有顶点都被访问到为止。换句话说,广度优先搜索遍历图的过程是以v为起始点,由近及远,依次访问和v有路径相通且路径长度为1,2,……的顶点。

所以要实现算法必须先建立一个元素类型为整形的空队列,并定义队首与队尾指针,同时也要定义一个标志数组以标记结点是否被访问。同样,也是从初始点出发开始访问,访问初始点,标志其已被访问,并将其入队。当队列非空时进行循环处理。当结点被访问时对其进行标志,并入队列。通过while()循环,并以是否被访问为控制条件,访问所有结点,完成图的广度优先遍历。

第四章

算法(数据结构)描述

4.1

图的存储结构的建立。

4.1.1

定义邻接表的边结点类型以及邻接表类型

struct

edgenode{

int

adjvex;

//该弧所指向的顶点的位置

edgenode

next;

//指向下条条弧的指针

};

//定义邻接表的边结点类型

typedef

edgenode

adjlist;

//定义邻接表类型

4.1.2

初始化图的邻接表

需建立一个邻接表初始化函数对图的邻接表进行初始化。即建立一个所有边结点都为空的邻接表。

void

InitGAdjoin(adjlist

for(int

i=1;inext)

cout|“adjvex;

coutadjvex;

//j为Vi的一个邻接点的序号

if(!visited[j])

dfsAdjoin(GL,visited,j,n);

p=p->next;

//使p指向Vi单链表的下一个边结点

}

}

4.2.2

广度优先遍历图的邻接表

图的广度优先遍历是从初始点出发,访问初始点,再访问初始点的邻接点。当初始点的所有邻接点都被访问过时,再依次访问各邻接点的邻接点。如此循环下去。算法的实现必须依靠辅助队列,结点被访问后,对其进行标记,并将结点入队列。

所以要实现算法必须先建立一个元素类型为整形的空队列,并定义队首与队尾指针,同时也要定义一个标志数组bool*

edgenode*

p=GL[k]。当边结点指针p不为空时,通过while()循环,并以p是否为空为控制条件,依次搜索Vk的每一个结点。若Vj没有被访问过则进行处理。访问完后,将p指向p->next。其中的while循环部分的代码如下:

while(p!=NULL){

//依次搜索Vk的每一个结点

int

j=p->adjvex;

//Vj为Vk的一个邻接点

if(!visited[j]){

//若Vj没有被访问过则进行处理

coutnext;

}

这样就可以访问所有结点,完成图的广度优先遍历。

第五章

源代码(源代码必须给注释,代码由谁写的请在相应的代码后写明组成员名称)

程序

图的存储与遍历

头文件

图.h

#ifndef

GRAPH_H

#define

GRAPH_H

#define

MAX_VRTEX_NUM

20

struct

edgenode{

int

adjvex;

edgenode

next;

};

//定义邻接表的边结点类型(由张三写的)

typedef

edgenode*adjlist;

//定义邻接表类型

void

InitGAdjoin(adjlist

//初始化图的邻接表

void

CreateAdjoin(adjlist

//建立图的邻接表

void

dfsAdjoin(adjlist

GL,bool*

//从初始点出发深度优先搜索由邻接表GL表示的图

void

bfsAdjoin(adjlist

GL,bool*

//从初始点出发广度优先搜索由邻接表GL表示的图

#endif

实现文件

图.cpp

#include

#include

#include“图.h“void

Check(int

n,int

void

InitGAdjoin(adjlist

for(int

i=1;i>e;

if(m==0){

//建立无向图

for(k=0;k>i>>j;

Check(n,i,j);

edgenode*p=new

edgenode;

p->adjvex=j;

p->next=GL[i];

GL[i]=p;

//向序号为i的单链表的表头插入一个边结点

p=new

edgenode;

p->adjvex=i;

p->next=GL[j];

GL[j]=p;

//向序号为j的单链表的表头插入一个边结点

}

coutnext)

cout|“adjvex;

cout>i>>j;

Check(n,i,j);

//向序号为i的表头插入一个边结点

edgenode*p=new

edgenode;

p->adjvex=j;

p->next=GL[i];

GL[i]=p;

}

coutnext)

cout|“adjvex;

coutadjvex;

//j为Vi的一个邻接点的序号

if(!visited[j])

dfsAdjoin(GL,visited,j,n);

p=p->next;

//使p指向Vi单链表的下一个边结点

}

}

void

bfsAdjoin(adjlist

GL,bool*

int

q[MaxLength]={0};

//定义一个队列q,其元素类型为整形

int

front=0,rear=0;

//定义队首和队尾指针

coutadjvex;

//Vj为Vk的一个邻接点

if(!visited[j]){

//若Vj没有被访问过则进行处理

coutnext;

}

}

}

void

Check(int

n,int

}

}

主函数程序文件

主函数.cpp

#include

#include“图.h“void

main()

{

int

i,n,m;

cout>n;

cout>m;

bool*visited=new

bool[n];

adjlist

gl;

InitGAdjoin(gl,n);

CreateAdjoin(gl,n,m);

coutnext!=NULL出了问题。将其改成p!=NULL后,邻接表便可顺利输出。下面就是经修改后以有向图G1和无向图G2为例的程序运行结果。

V

V

V

V

V1V2

V1V2

V

V3

V

V

V3V4

V4V5

图1

G1

图2

G2

1.有向图G1的运行结果

图3

G1的运行结果

2.无向图G2的运行结果

图4

G2的运行结果

第七章

结束语

转眼,为期两周的《数据结构》课程设计实习即将结束了。在这次实习中,自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。同时也学会了解决问题的方法。总结起来,自己主要有以下几点体会:

1.必须牢固掌握基础知识。由于C语言是大一所学知识,有所遗忘,且未掌握好这学期所学的《数据结构》这门课,所以在实习之初感到棘手。不知如何下手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢慢地对C语言和数据结构知识有所熟悉。这时才逐渐有了思路。所以,这次实习之后,我告诫自己:今后一定要牢固掌握好专业基础知识。

2.必须培养严谨的科学态度。自己在编程时经常因为一些类似于“少了分号”的小错误而导致错误,不够认真细致,这给自己带来了许多麻烦。编程是一件十分严谨的事情,容不得马虎。所以在今后自己一定要培养严谨的科学态度。我想这不仅是对于程序设计,做任何事都应如此。

3.这次课程设计也让我充分认识到《数据结构》这门课的重要性。它给我们一个思想和大纲,让我们在编程时容易找到思路,不至于无章可循。同时它也有广泛的实际应用。

总之,在这次实习中,自己的C语言以及数据结构知识得到提高,编程能力也得到了提高。

第八章

参考文献(要求不少于5篇,可以是论文,可以是专著)

1.

杨路明

C语言程序设计教程

北京邮电大学出版社

2.

徐孝凯

数据结构课程实验

清华大学出版社

3.

严蔚敏

吴伟民

数据结构(C语言版)

清华大学出版社

余生不能没有你 2022-07-04 12:46:12

相关推荐

蚍蜉撼树是什么意思蚍(蚍蜉撼树是什么意思)

1、蜉蝣树(拼音pfhnsh)是中国成语,蜉蝣树(蜉蝣:一种大蚂蚁;Shake:摇动)比喻力量本来就很弱,但是你想摇动一个很强大的东西,就不能随心所欲了。这个成语一般用作主语、谓语、宾语,属于主谓式,含有贬义。...
展开详情

得意洋洋,反义词(得意洋洋的反义词)

1、得意洋洋的反义词有郁郁寡欢的,有空虚进取的书,有哭天抢地的,有郁郁寡欢的,有失意的,有垂头丧气的,有谦虚谨慎的,有黯然销魂的,有抑郁的。2、“得意”是中国成语,读作:dyyngyng,解释为:得意:明白意图...
展开详情

如法炮制的意思和造句(如法炮制)

1、如法炮制(拼音:rfpozh)是一个成语,起源于西汉的司马迁《史记魏世家》。2、如法炮制(炮制:一种将中药焙炒的方法)是指按照制造方法制造中药;比喻按照现成的方式办事。一般在句子中做谓语、定语、状语。3、出...
展开详情

阳春白雪和下里巴人最初指的是什么(春白雪)

1、杨春白雪。2、杨春白雪,中国的一个成语,发音为yngchnbixu,最初指战国时期楚国比较高雅的歌曲,后来指博大精深的文学艺术。3、战国楚宋玉《对楚王问》:“仲英有歌者,其开头为:《对楚王问》《下里》。全国...
展开详情

依草附木的理解(依草附木的意思)

1、草乌,中国成语,拼音为ycofm,意为鬼神有所依靠,善于造化;比喻依靠他人的力量后,作恶多端;也比喻不能自立,依赖他人。从《巫庙》。2、出自五代和纣王的诗《巫庙》:“天有福报,老人为精灵,循草而沾木,无虚妄...
展开详情

精选推荐更多>

浅冬的意思

浅冬的意思是刚刚入冬。
浅(拼音:qiǎn、jiān)是汉语通用一级汉字(常用字)。此字始见于战国金文,形声字,古字形从水,戋声。浅本义指水不深,也指房屋等处所窄小,引申指时间上的距离短。此外浅也引申为内容、见识、学问、颜色等不深,用作抽象意义。“浅”另有一个音读jiān,古书上叠用成“浅浅”,用来形容水流声,现代已不常用了。
出处:
1、《诗经·邶风·谷风》:“就其浅矣,泳之游之。”
2、《古诗十九首·迢迢牵牛星》:“河汉清且浅,相去复几许?”
相关组词:深浅、浅水、浅色、搁浅、肤浅、粗浅。
反义词:深。

高尔基的代表作

高尔基的代表作有《海燕》、《在人间》、《鹰之歌》、《母亲》、《我的大学》、《春天的旋律》、《克里姆·萨姆金的一生》、《小市民》、《意大利童话》、《在人间》、《俄罗斯童话》等。

人物介绍:

马克西姆·高尔基(1868年3月28日—1936年6月18日),原名阿列克赛·马克西姆维奇·彼什科夫,是苏联无产阶级作家、诗人、评论家、政论家、学者。高尔基诞生在伏尔加河畔下诺夫哥罗德镇的一个木工家庭。

4岁时,父亲去世,他跟母亲一起在外祖父家度过童年。

10岁时,开始独立谋生,先后当过学徒、搬运工、看门人、面包工人等。

1884年,参加民粹党小组,阅读民粹党人著作和马克思的著作,投身于革命活动。1905年,高尔基加入了俄国社会民主工党。

1906年,高尔基受列宁的委托,由芬兰去美国进行革命活动,在美国出版长篇小说《母亲》。后定居意大利卡普里岛。

1913年,高尔基从意大利回国,从事无产阶级文化组织工作,主持《真理报》的文艺专栏。

1921年10月,高尔基出国疗养。1928年,高尔基回到苏联,在斯大林的安排下,他在俄罗斯作了两次长途旅行观光后决定回国定居。

1934年当选为苏联作家协会主席。回国后的高尔基作为苏联文化界的一面旗帜,为苏维埃的文化建设做了大量工作。

但20世纪30年代苏联出现的种种问题又使他与斯大林及现实政治始终保持一定的距离。1936年6月18日,高尔基因病逝世,享年68岁。

创作特点:

作品主题:

高尔基早期创作的现实主义作品多取材于他的底层生活的见闻和感受。这些作品除强烈地控诉了资本主义社会的罪恶外,还力图揭示流浪汉内心深处的痛苦和新旧意识的斗争,捕捉劳动群众生活的时代特征,其目的仍然是要唤起人们对生活的积极态度。

高尔基的文学创作起步于浪漫主义。高尔基一生都在探索个人和历史的关系,寻找合理的社会生活,其作品中的主人公也往往充满激烈的内心冲突,并积极投身革命活动,探求改造现实的途径。高尔基曾不止一次地遭到沙皇政府的逮捕、监督和放逐,但他依旧始终如一地进行自己的革命和文学活动。

高尔基的创作中处处洋溢着对积极人生态度的赞美,向往唤醒人民群众创造新生活的激情,唤起人对自己作为人的自豪感,鄙视怜悯与恩赐。在高尔基看来,人有权力,也有力量创造与人相称的生活,怜悯与恩赐是贬低人,有辱人的尊严。

高尔基有互相冲突的两种人格。一是对现实社会造成人异化的现实的悲剧性体验和失望的痛苦;二是对人、对社会的热爱以及对未来的理想主义的认识。第一次资产阶级民主革命前的高尔基对俄国伟大的无产阶级革命事业是充满了热爱和信念的,他是怀着极大的热诚去迎接美好的未来的。作家此间的创作描写了革命前劳苦大众的悲惨生活,表达了他一种急切地改变现实的渴望,对未来新生活主人的召唤。

艺术特色:

在塑造艺术形象方面,高尔基强调通过典型化的手法塑造生动的形象揭示生活的本质,同时展示社会发展的未来前景,其现实主义创作又融入了积极浪漫主义的乐观、自信的特点,给人以强烈的艺术感染力。

高尔基主张作家应以现实主义典型化的方法塑造形象,使艺术形象真实而生动。对文学反映生活的真实性,其根本点取决于作家对生活感受的程度,这中间必然表现出作家的审美态度。高尔基对文学反映社会生活的真实性也体现了他的新的审美观。他以敏锐的观察力认识到生活的真实本质是正演绎着一场前历未有的社会巨大变革。而掀起这场社会变革的主要力量就是已经觉醒的劳动人民,他称之为“新人”,因此,他的文学创作的真实性及艺术的典型化的理念中明确了艺术就是要塑造这些为社会变革不断奋斗的“新人形象”。

高尔基的现实主义文学与传统现实主义文学有着本质的区别。传统现实主义仅仅反映社会的真实现状,而这种真实现状大多表现为个人与社会的矛盾冲突,其实质是通过人性受到的摧残而表现出的对社会的否定与批判。

人物影响:

在作家辞世近半个世纪以后,人们对他的兴趣还是出现持续性的高涨。在欧美各国,不时掀起了“高尔基热”。尤其是高尔基的剧本,不断被搬上各国舞台,或拍成电视、电影。20世纪六七十年代,《在底层》和《仇敌》等在美国上演或播出,《仇敌》被剧评家认为“是已经播出的节目中最好的剧目”。在联邦德国,上演过高尔基的《瓦萨·日列兹诺娃》,而演出《避暑客》时,被评论家誉为文艺复兴以来的盛事。而在法国,英国和西班牙等地,也都上演过高尔基的剧本。

高尔基的创作对美国进步作家的影响也不可忽视。尤其是他创作中的“个人的社会活力”(指个人变革自我、变革社会和变革自然的创造力)主题与“死物奴役活人”的主题,以及处理这类主题的艺术风格,更是引起了他们的浓厚兴趣。

高尔基充满革命激情和革命乐观主义的作品,为中国广大读者所喜爱,教育和鼓舞我国人民为消灭剥削制度和建设新社会而斗争。

夜夜心是什么意思

“夜夜心”的意思是因为狐独而夜夜悔恨。出自唐代李商隐《嫦娥》,原文:
云母屏风烛影深,长河渐落晓星沉。嫦娥应悔偷灵药,碧海青天夜夜心。
译文:
透过装饰着云母的屏风,烛影渐渐暗淡下去。银河也在静静地消失,晨星沉没在黎明的曙光里。月宫的嫦娥恐怕后悔偷了后羿的长生不老药,现在只有那青天碧海夜夜陪伴着她一颗孤独的心。
赏析:
就内容而论,这是一首咏嫦娥的诗。然而各家看法不一。有人以为歌咏意中人的私奔,有人以为是直接歌咏主人公处境孤寂,有人以为是借咏嫦娥另外有所寄托,有人以为是歌咏女子学道求仙,有人以为应当作“无题”来看。兹且当作歌咏幽居寂处,终夜不眠的女子。以此而论,着实写得贴情贴理。语言含蕴,情调感伤。
诗中所抒写的孤寂感以及由此引起的“悔偷灵药”式的情绪,却融入了诗人独特的现实人生感受,而含有更丰富深刻的意蕴。在黑暗污浊的现实包围中,诗人精神上力图摆脱尘俗,追求高洁的境界,而追求的结果往往使自己陷于更孤独的境地。清高与孤独的孪生,以及由此引起的既自赏又自伤,既不甘变心从俗,又难以忍受孤孑寂寞的煎熬这种微妙复杂的心理,在这里被诗人用精微而富于含蕴的语言成功地表现出来了。这是一种含有浓重伤感的美,在旧时代的清高文士中容易引起广泛的共鸣。诗的典型意义也正在这里。

慈眉善目形容老人还是年轻人

“慈眉善目”形容老人。意思是形容人的容貌一副善良的样子。出自《老张的哲学》:“圆圆的脸,长满银灰的胡子,慈眉善目的。”
造句:
1、我们都被她慈眉善目的样子蒙骗了。
2、老爷爷慈眉善目,一定是个好人。
3、孙爷爷长得慈眉善目,又爱给我们讲故事,所以大家都非常喜欢他。
4、这个大娘,慈眉善目的,一见到她就觉得亲得不得了。
5、这位老人脸上总是挂着笑,看起来慈眉善目的。
6、小草怀着无比崇敬的心境仰望着慈眉善目的太阳。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200