资源简介
数据结构图的知识,校园导游图,
可以查询所有路径和最短路径,自己写的算法。
代码片段和文件信息
#include “stdio.h“
#include “stdlib.h“
#include “string.h“
#define Max 20
struct Path
{int Pathway[Max][Max];
int Pathlength[Max];
int length;
};
struct Stack
{int a[Max];
int top;
};
struct ArcNode
{int adjvex;
int length;
ArcNode *nextarc;
};
struct VNode
{
char name[20];
char info[100];
ArcNode *firstarc;
};
struct Graph
{VNode vertices[Max];
int vexnumarcnum;
};
void InitGraph(Graph &g)
{g.vexnum=0;
g.arcnum=0;
}
void InitStack(Stack &S)
{S.top=0;}
void Push(Stack &Sint x)
{S.a[S.top]=x;
S.top++;
}
void GetTop(Stack &Sint &x)
{x=S.a[S.top-1];
}
bool Pop(Stack &Sint &x)
{if(S.top<0)
return 0;
else
{x=S.a[--S.top];
return 1;
}}
bool InStack(Stack Sint x)
{for (int i=0;i {if (S.a[i]==x)
{return 1;
}
}
return 0;
}
bool LocateVex(Graph gchar *uint &x)
{for (int i=0;i {if(!strcmp(g.vertices[i].nameu))
{x=i;return 1;
}
}
return 0;
}
void GetVex(Graph gint iVNode* &v)
{if (i {v=&g.vertices[i];
}
v=NULL;
}
void InsertVex(Graph &gVNode v)
{strcpy(g.vertices[g.vexnum].namev.name);
strcpy(g.vertices[g.vexnum].infov.info);
g.vertices[g.vexnum].firstarc=NULL;
g.vexnum++;
}
void InserArc(Graph &gint vint wint length)
{ if(v>=g.vexnum||w>=g.vexnum)
exit(0);
else
{ArcNode *temp=(ArcNode *)malloc(sizeof(ArcNode))*temp2=(ArcNode *)malloc(sizeof(ArcNode));
temp->length=length;temp->adjvex=w;temp->nextarc=NULL;
temp2->length=length;temp2->adjvex=v;temp2->nextarc=NULL;
if(!g.vertices[v].firstarc)
g.vertices[v].firstarc=temp;
else
{temp->nextarc=g.vertices[v].firstarc;
g.vertices[v].firstarc=temp;
}
if(!g.vertices[w].firstarc)
g.vertices[w].firstarc=temp2;
else
{temp2->nextarc=g.vertices[w].firstarc;
g.vertices[w].firstarc=temp2;
}
g.arcnum++;
}
}
bool GetNextVNode(Graph gint vint wArcNode* &next)
{if(v==w)
{next=g.vertices[v].firstarc;return 1;}
else
{ArcNode *temp=g.vertices[v].firstarc;
while (temp&&temp->adjvex!=w)
temp=temp->nextarc;
next=temp->nextarc;
return 1;
}
return 0;
}
//用于保存路径的函数
void InitPath(Path &pa)
{for (int i=0;i {pa.Pathlength[i]=0;pa.Pathway[i][0]=0;}
pa.length=0;
}
void CopyPath(Path &paStack S)
{pa.Pathway[pa.length][0]=S.top;
for(int i=0;i pa.Pathway[pa.length][i+1]=S.a[i];
pa.length++;
}
Path FindPath(Graph gint vint w)
{Stack S;Path Pa;int xy;
int *record=(int *)malloc(g.vexnum*sizeof(int));
for (int i=0;i {record[i]=i;
}
InitStack(S);InitPath(Pa);
VNode temp;ArcNode *next;
temp=g.vertices[v];
Push(Sv);
GetNextVNode(gvvnext);
record[v]=next->adjvex;
while(S.top)
{
if(next)
{x=next->adjvex;
if(!InStack(Sx))
{Push(Sx);
if(x==w)
{
CopyPath(PaS);
Pop(Sy);
GetTop(Sy);
GetNextVNode(gyrecord[y]next);
record[y]=next?next->adjvex:y;
}
else
GetNextVNode(gxrecord[x]next);
record[x]=next?next->adjvex:x;
}
else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 35164 2011-12-10 18:27 校园导游图\Debug\main.obj
文件 33792 2011-12-12 12:24 校园导游图\Debug\vc60.idb
文件 53248 2011-12-10 18:27 校园导游图\Debug\vc60.pdb
文件 180297 2011-12-10 18:27 校园导游图\Debug\校园导游图.exe
文件 370140 2011-12-10 18:27 校园导游图\Debug\校园导游图.ilk
文件 226100 2011-12-10 16:42 校园导游图\Debug\校园导游图.pch
文件 484352 2011-12-10 18:27 校园导游图\Debug\校园导游图.pdb
文件 8384 2011-12-10 18:27 校园导游图\main.cpp
文件 4337 2011-12-05 21:53 校园导游图\校园导游图.dsp
文件 530 2011-12-05 21:15 校园导游图\校园导游图.dsw
文件 50176 2011-12-11 00:14 校园导游图\校园导游图.ncb
文件 48640 2011-12-11 00:14 校园导游图\校园导游图.opt
文件 1553 2011-12-10 18:27 校园导游图\校园导游图.plg
目录 0 2011-12-29 17:49 校园导游图\Debug
目录 0 2011-12-29 17:49 校园导游图
----------- --------- ---------- ----- ----
1496713 15
相关资源
- 数据结构课程设计(排序综合)
- 64点的FFT基8算法的蝶形图
- Leaflet 瓦片地图切割工具 用于切割本
- ad9680开发板原理图
- 全国六大流域矢量图shp格式
- 华为P30 P30pro V30 pro 原理图位号图华为
- PS图层批量命名插件renamy
- QT+opencv图像几何变换,包括图像平移
- 运动模糊图像复原毕业论文
- 用VC实现小型矢量图形系统的开发
- Qt鼠标拖动绘制基本几何图形(直线、
- 快速制图插件20180104
- 温度数据采集上位机程序
- 【5.1】图书管理系统201099
- EXCEL中国地图省份-进阶版
- 数据结构课程设计实验报告后缀表达
- 图片转换工具jpg .jpeg .gif .png .bmp图片
- 创新项目申请书参考
- 新建 Microsoft Word 文档.docx
- Graphcut-源码及实现
- 获取dllexe 中的资源图片源代码
- Win8 32位 4G内存破解图文教程
- 数据结构大作业+设计说明书
- 基于图像匹配技术的飞机识别
- 华东理工大学计算机815数据结构考研
- Activiti6-流程跟踪监控图-节点-流程线
- 交互式计算机图形学-基于OpenGL的自顶
- 数据结构习题集答案--清华大学版
- Gif截图工具
- 加强版Qcharts曲线支持散点图
评论
共有 条评论