实验名称类别辅助教师授课对象教材讲义。
图。必修(√)限选(
任选(实验编号实验课时。类型。
演示、验证(√)综合、设计()职称。
信计141-2
实验内容(教学过程)
实验目的实验装置实验准备实验内容思考题实验报告要求。
备注。掌握图的建立和遍历。
计算机。课前预习。
1.建立一个无向图;
2.利用深度遍历方式实现图的遍历。
书写。附录:
参考算法如下:1.头文件。
/使用邻接链表实现图的建立#includeusingnamespacestd;
#definemax_vex30//最大顶点数typedefintinfotype;typedefintvextype;
typedefenumgraphkind;
/表结点类型定义。
typedefstructlinknodelinknode;
/顶点结点类型定义typedefstructvexnodevexnode;
/弧或边的结构定义typedefstructarctypearctype;
/图的结构定义。
typedefstructalgraphalgraph,*alggraph;
/深度优先遍历图。
typedefenumboolean;booleanvisited[max_vex];
/广度优先遍历图typedefstructqueuequeue;//定义一个队列保存将要访问顶点//图的创建。
algraph*create_graph(alggraph&g);
/向图中增加顶点,在adjlist数组的末尾增加一个数据元素。intaddvertex(algraph*g,vextypevp);
/图的顶点定位,确定一个顶点在adjlist数组中的某个元素的data域内容。intlocatevex(algraph*g,vextypevp);/向图中增加一条弧。
intaddarc(algraph*g,arctype*arc);/深度优先遍历图。
voiddfs(alggraph&g,intv);/用邻接表实现voiddfs_tr**erse_graph(alggraph&g);
2.源程序文件。
alggraphg;
create_graph(g);
inti;for(i=1;i<=7;i++)
intm;arctype*arc=newarctype;arc->vex1=1;arc->vex2=2;
m=addarc(g,arc);arc=newarctype;arc->vex1=1;arc->vex2=3;
m=addarc(g,arc);arc=newarctype;arc->vex1=1;arc->vex2=4;
m=addarc(g,arc);arc=newarctype;arc->vex1=1;arc->vex2=5;
m=addarc(g,arc);arc=newarctype;arc->vex1=2;arc->vex2=3;
m=addarc(g,arc);arc=newarctype;arc->vex1=4;arc->vex2=5;
m=addarc(g,arc);arc=newarctype;arc->vex1=3;arc->vex2=6;
m=addarc(g,arc);arc=newarctype;arc->vex1=3;arc->vex2=7;
m=addarc(g,arc);arc=newarctype;arc->vex1=6;arc->vex2=7;
m=addarc(g,arc);cout algraph*create_graph(alggraph&g) /向图中增加顶点,在adjlist数组的末尾增加一个数据元素。intaddvertex(algraph*g,vextypevp) if(locatevex(g,vp)!=1) g->adjlist[g->vexnum].data=vp;g->adjlist[g->vexnum].degree=0;g->adjlist[g->vexnum]. firstarc=null;k=++g->vexnum;return(k);} /图的顶点定位,确定一个顶点在adjlist数组中的某个元素的data域内容。intlocatevex(algraph*g,vextypevp) return(-1);/图中无此顶点} /向图中增加一条弧。 /根据给定的弧或边所依附的顶点,修改单链表:无向图修改两个单链表;有向图修改一个单链表。 intaddarc(algraph*g,arctype*arc) /边的起始表结点赋值。 p=(linknode*)malloc(sizeof(linknode));p->adjvex=k;p->info=arc->info;p->nextarc=null; /边的末尾表结点赋值。 q=(linknode*)malloc(sizeof(linknode));q->adjvex=j;q->info=arc->info;q->nextarc=null; /无向图,用头插入法插入到两个单链表if(g->kind==ag||g->kind==wag) else//有向图的邻接链表,用头插入法。 return(1);} g->adjlist[k].firstarc;=q;//建立正邻接链表用。 /从下标为v的结点出发深度优先遍历图。 voiddfs(alggraph&g,intv)//用邻接表实现。 p=p->nextarc;//从v的未访问过的邻接顶点出发深度优先搜索}} /深度优先遍历图。 voiddfs_tr**erse_graph(alggraph&g) for(v=0;vvexnum;v++) 实验1 adt list 线性表 6学时 问题描述 线性表是典型的线性结构,实现adt list,并在此基础上实现两个集合的交运算和并运算。实验目的 1 掌握线性表的链表存储结构。2 掌握在单链表上基本操作的实现。3 在掌握单链表的基本操作上进行综合题的实现。实验内容及要求 1 要求用带头结点的单链... 福建农林大学实验报告。系 教研室 计算机专业年级实验课程。姓名学号实验室号计算机号。实验时间指导教师签字成绩。实验四实现fibonacci检索算法 验证性 4学时 一 实验目的和要求。掌握不同的检索方法,并能用高级语言实现检索算法 熟练掌握顺序表和有序表的检索方法,以及静态检索树的构造方法和检索算法... 计算机科学与技术系。实验报告。专业名称网络系统管理 课程名称数据结构与算法 项目名称堆栈实验 班级 13网络系统管理 学号 1304052010 姓名汪康。同组人员。实验日期。一 实验目的与要求 1 掌握堆栈的两种不同的存储结构。2 掌握应用堆栈表示数据 并进行有关算法设计的方法。二 实验背景 堆栈...算法与数据结构实验
算法与数据结构实验
数据结构与算法实验