• 大小: 1.18MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-28
  • 语言: 其他
  • 标签: 课程作业  

资源简介

中国大学MOOC浙江大学数据结构课程(陈越)____数据结构作业(内含所有作业)

资源截图

代码片段和文件信息

/***************************************************************************************
Dijkstra算法实现 
*****************************************************************************************/ 
#include 
#include 
#include 

#define MaxNumVertex 500
#define INFINITY     65535
#define ERROR        -1
/* define edge */
typedef int  VertexType;
typedef int  WeightType;
typedef int  CostType;
typedef char DataType;
typedef struct ENode *PtrToENode;
struct ENode{
VertexType V1 V2;
WeightType Weight;
};
typedef PtrToENode Edge;
/* define graph and func*/
typedef struct GNode *PtrToGNode;
struct GNode{
int Nv;
int Ne;
WeightType G[MaxNumVertex][MaxNumVertex];
DataType Data[MaxNumVertex];
};
typedef PtrToGNode MGraph;

MGraph BuildMGraph(VertexType *S);
void InsertEdge(MGraph Graph Edge E);
void Dijkstra(MGraph Graph WeightType *Dist VertexType *Path VertexType S);
VertexType FindMinValue(WeightType *Dist int numV bool *collectS);
/* test data */
MGraph TestData(VertexType *S);

int main()
{
MGraph Graph;
WeightType Dist[MaxNumVertex];
VertexType Path[MaxNumVertex] S minVertex V;

// Graph = BuildMGraph(&S);
Graph = TestData(&S);
Dijkstra(Graph Dist Path S);
for(V = 0; V < Graph->Nv; V++)
printf(“%d “ Dist[V]);

return 0;
}

MGraph BuildMGraph(VertexType *S)
{
int i j;
MGraph Graph;
Edge E;

Graph = (MGraph)malloc(sizeof(struct GNode));
E = (Edge)malloc(sizeof(struct ENode));
scanf(“%d“ &Graph->Nv);
Graph->Ne = 0;
for(i = 0; i < Graph->Nv; i++)
for(j = 0; j < Graph->Nv; j++){
if(i == j)
Graph->G[i][j] = 0;
else 
Graph->G[i][j] = INFINITY;
}
scanf(“%d %d“ &Graph->Ne S);
for(i = 0; i < Graph->Ne; i++){
scanf(“%d %d %d“ &E->V1 &E->V2 &E->Weight);
InsertEdge(Graph E);
}
free(E);

return Graph;
}

void InsertEdge(MGraph Graph Edge E)
{
Graph->G[E->V1][E->V2] = E->Weight;
Graph->G[E->V2][E->V1] = E->Weight;
}

void Dijkstra(MGraph Graph WeightType *Dist VertexType *Path VertexType S)
{
VertexType V minV;
bool collectS[MaxNumVertex];
/* initial the Dist and Path */
for(V = 0; V < Graph->Nv; V++){
Dist[V] = Graph->G[S][V];
Path[V] = S;
collectS[V] = false; 
}
/* do the Dijkstra */
while(1){
minV = FindMinValue(Dist Graph->Nv collectS);
if(minV == ERROR)
break;
collectS[minV] = true;
for(V = 0; V < Graph->Nv; V++)
if(collectS[V] == false && Graph->G[minV][V] < INFINITY)
if(Dist[minV] + Graph->G[minV][V] < Dist[V]){
Dist[V] = Dist[minV] + Graph->G[minV][V];
Path[V] = minV;
}
}
}

VertexType FindMinValue(WeightType *Dist int numV bool *collectS)
{
VertexType minV V;
WeightType minDist;

minDist = INFINITY;
minV = ERROR;
for(V = 0; V < numV; V++)
if(collectS[V] == false && Dist[V] < minDist){
minDist = Dist[V];
minV = V;
}

return minV;
}

MGraph TestData(V

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-09 21:45  浙江大学数据结构课程(陈越)____数据结构作业\
     目录           0  2018-01-04 09:24  浙江大学数据结构课程(陈越)____数据结构作业\Dijkstra\
     文件        3601  2018-01-04 09:24  浙江大学数据结构课程(陈越)____数据结构作业\Dijkstra\example.c
     文件      160764  2018-01-04 09:24  浙江大学数据结构课程(陈越)____数据结构作业\Dijkstra\example.exe
     目录           0  2017-12-26 16:20  浙江大学数据结构课程(陈越)____数据结构作业\Huffman Codes\
     文件       10929  2017-12-26 16:19  浙江大学数据结构课程(陈越)____数据结构作业\Huffman Codes\example.c
     文件      169541  2017-12-26 16:20  浙江大学数据结构课程(陈越)____数据结构作业\Huffman Codes\example.exe
     目录           0  2017-12-24 19:24  浙江大学数据结构课程(陈越)____数据结构作业\HuffmannTreeBuild\
     文件        3872  2017-12-24 19:25  浙江大学数据结构课程(陈越)____数据结构作业\HuffmannTreeBuild\example.c
     文件      161691  2017-12-24 19:24  浙江大学数据结构课程(陈越)____数据结构作业\HuffmannTreeBuild\example.exe
     目录           0  2017-12-21 19:38  浙江大学数据结构课程(陈越)____数据结构作业\Root of AVL Tree\
     文件        4177  2017-12-21 19:38  浙江大学数据结构课程(陈越)____数据结构作业\Root of AVL Tree\example.c
     文件      160369  2017-12-21 19:38  浙江大学数据结构课程(陈越)____数据结构作业\Root of AVL Tree\example.exe
     目录           0  2017-12-13 09:12  浙江大学数据结构课程(陈越)____数据结构作业\一元多项式的乘法与加法运算\
     文件        4547  2017-12-13 09:20  浙江大学数据结构课程(陈越)____数据结构作业\一元多项式的乘法与加法运算\example.c
     文件      161115  2017-12-13 09:12  浙江大学数据结构课程(陈越)____数据结构作业\一元多项式的乘法与加法运算\example.exe
     目录           0  2017-12-18 09:39  浙江大学数据结构课程(陈越)____数据结构作业\两个有序链表序列的合并\
     文件        2606  2017-12-12 11:22  浙江大学数据结构课程(陈越)____数据结构作业\两个有序链表序列的合并\example.c
     文件      159497  2017-12-18 09:39  浙江大学数据结构课程(陈越)____数据结构作业\两个有序链表序列的合并\example.exe
     目录           0  2017-12-22 08:39  浙江大学数据结构课程(陈越)____数据结构作业\二叉搜索树的操作集\
     文件        4988  2017-12-22 08:39  浙江大学数据结构课程(陈越)____数据结构作业\二叉搜索树的操作集\example.c
     文件      161624  2017-12-22 08:39  浙江大学数据结构课程(陈越)____数据结构作业\二叉搜索树的操作集\example.exe
     目录           0  2017-12-18 15:22  浙江大学数据结构课程(陈越)____数据结构作业\二叉树的遍历\
     文件        3481  2017-12-18 15:35  浙江大学数据结构课程(陈越)____数据结构作业\二叉树的遍历\example.c
     文件      161008  2017-12-18 15:22  浙江大学数据结构课程(陈越)____数据结构作业\二叉树的遍历\example.exe
     目录           0  2017-12-29 11:27  浙江大学数据结构课程(陈越)____数据结构作业\列出连通集\
     文件        5386  2017-12-29 11:26  浙江大学数据结构课程(陈越)____数据结构作业\列出连通集\example_LGraph.c
     文件      162107  2017-12-29 11:27  浙江大学数据结构课程(陈越)____数据结构作业\列出连通集\example_LGraph.exe
     文件        4940  2017-12-29 09:50  浙江大学数据结构课程(陈越)____数据结构作业\列出连通集\example_MGraph.c
     文件      162125  2017-12-29 09:54  浙江大学数据结构课程(陈越)____数据结构作业\列出连通集\example_MGraph.exe
     目录           0  2018-01-03 16:32  浙江大学数据结构课程(陈越)____数据结构作业\哈利·波特的考试\
............此处省略30个文件信息

评论

共有 条评论