图的遍历实现实验报告2011021225陈曦路

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档