图的遍历实现实验报告2011021225陈曦路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长沙学院计算机科学与技术系
实验报告本
课程名称数据结构(c语言版)
指导教师周新华
班级2011级计科02班
学号2011021225
姓名陈曦路
开课学期2012 学年第一学期
撰写及拟改实验报告注意事项
一、填写信息
1、填写信息齐全、字迹清晰、日期真实;
2、每次实验信息应填写完整,如:实验序号及实验项目;
3、每次实验时间应如实填写完整,如:第周星期第节;
4、实验报告撰写认真细致,图例完整,有大量源代码的可以附页。
二、批改实验报告
1、一律采用等级制;
2、批改时应对错分明,错误之处应有文字说明或指出错误的标记;
3、批改后的签名和日期应完整。
计算机专业实验课程考试与考核
为推动实验教学改革,规范实验课程考试与考核,提高学生实践动手能力。计算机专业实验部对实验课程考试与考核方法如下规定。
1、考核以实验课程的教学大纲为准。
2、根据课程性质,采用考核制,总成绩采用等级制计分。
以本实验课程完成的实验内容为依托,独立完成老师布置的验证性、综合性、设计性、创新性实验项目。重点考查学生实验态度,在实验过程中能否及时发现问题,解决问题,是否有创新性设计思想。
实验过程考核
●学生在实验过程中能否独立、及时完成实验任务,态度是否端正,对工具、仪器能否正确使用等;
●实验操作是否规范、代码编写是否正确;
●实验报告撰写是否规范、工整。
实验成绩评分标准
●独立完成实验项目,实验结果正确,实验报告撰写规范,并有创新性设计思想;优;
●独立完成实验项目,实验结果正确,实验报告撰写规范。良;
●独立完成实验项目,实验结果基本正确,实验报告撰写规范。中;
●在老师的指导下,基本完成实验项目,实验结果基本正确,实验报告撰写规范。及格;
●不能完成实验项目,实验结果不正确,实验报告撰写不规范。不及格。
实验项目名称图的遍历实现实验项目评分
实验序号3 实验时间 3 周星期第节1
4
typedef int InfoType;
typedef int V ertexType;
typedef int Status;
typedef int QElemType;
typedef int SElemType;
typedef enum{DG,DN,UDG,UDN}GraphKind;// 无向图,无向网,有向图,有向网
bool visited[MAX_VERTEX_NUM];
typedef struct ArcNode{
int adjvex;//该弧所指向的顶点在数组中的下标
struct ArcNode *nextarc;
InfoType *info;//该弧相关信息的指针
}ArcNode;
typedef struct VNode{
V ertexType data;//顶点信息
ArcNode *firstarc;//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct{
AdjList vertices;
int vexnum,arcnum;//图的当前顶点数和弧数
int kind;//图的种类标志
}ALGraph;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int LocateV ex(ALGraph G,V ertexType v){//返回数组下标值int i;
for(i=0;i if(G.vertices[i].data==v) return i; return -1; } void CreateDN(ALGraph &G){ //构造有向图G(G.kind=DN) int i,j,k; ArcNode *p; V ertexType v1,v2; G.kind=DN; printf("输入顶点数: "); scanf("%d",&G.vexnum); printf("输入弧数: "); scanf("%d",&G.arcnum); printf("输入顶点: \n"); for(i=0;i scanf("%d",&G.vertices[i].data); G.vertices[i].firstarc=NULL;//初始化指针 } for(k=0;k printf("第%d条弧: \n",k+1); scanf("%d",&v1); scanf("%d",&v2);//输入一条弧的始点和终点 i=LocateV ex(G,v1); j=LocateV ex(G,v2);//确定v1和v2在G中的位置 p=(ArcNode*)malloc(sizeof(ArcNode)); p->adjvex=j; p->nextarc=G.vertices[i].firstarc; G.vertices[i].firstarc=p; scanf("%d",&p->info); } } Status Push(SqStack &S,SElemType e){ if(S.top-S.base>=S.stacksize){ S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT) *sizeof(SElemType)); if(!S.base) exit(-2); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;