御坂19090 发表于 2023-2-22 20:52:29

这个是什么原因呀。明明感觉没问题。怎么也不明白

166094#include <stdio.h>
#include <stdlib.h>

#define scanf scanf_s
#define MAXVEX 16                        // 最大顶点数
#define INFINITY 65535                // 用2的16次方来代表无穷大


typedef struct {    // 邻接矩阵
    char vexs;                                // 顶点表
    int arc;                // 邻接矩阵
    int numVertexes, numEdges;                // 图中当前的顶点数和边数
} MGraph;

typedef int Pathatirx;    // 用于存储每条路径对应的长度
typedef int ShortPathTable; // 路径数组; 用于存储到下标代表的顶点到对应的点的最短路径

// 建立邻接矩阵
void Create_MGraph(MGraph* head) {
    int i, j, k, w;

    printf("请输入顶点数和边数:\n");
    scanf("%d %d", &head->numVertexes, &head->numEdges);
    getchar();//吸收换行符

    printf("请录入顶点名称:");
    for (i = 0; i < head->numVertexes; i++) {    //录入顶点
      scanf("%c", &head->vexs);
      getchar();//吸收换行符
    }

    for (i = 0; i < head->numVertexes; i++) {
      for (j = 0; j < head->numVertexes; j++) {
            head->arc = INFINITY;                        // 邻接矩阵初始化
      }
    }

    printf("请输入边(i,j)的i,j和对应的权w;格式(i j w):\n");
    for (k = 0; k < head->numEdges; k++) {
      scanf("%d %d %d", &i, &j, &w);
      head->arc = w;
      head->arc = head->arc;                        // 因为是无向网图,对称矩阵
    }
}


void ShortestFath_Floyd(MGraph head, Pathatirx *P, ShortPathTable *D) {
    int v, w, k;

    //初始化D和P
    for (v = 0; v < head.numVertexes; v++){
      for (w = 0; w < head.numVertexes; w++){
            (*D) = head.arc;
            (*P) = w;
      }
    }
   
    //优美的弗洛伊德算法
    for (k = 0; k < head.numVertexes; k++) {
      for (v = 0; v < head.numVertexes; v++) {
            for (w = 0; w < head.numVertexes; w++) {
                if ((*D) > (*D) + (*D)) {
                  (*D) = (*D) + (*D);
                  (*P) = (*P);
                }
            }
      }
    }
}

int main() {
    MGraph head;
    Pathatirx P;
    ShortPathTable D;

    Create_MGraph(&head);

    ShortestFath_Floyd(head, 0, &P, &D);
}achimg]

homeskating 发表于 2023-2-22 21:55:26

ShortestFath_Floyd函数多传了一个参数,或者函数声明的时候你少写了一个参数
页: [1]
查看完整版本: 这个是什么原因呀。明明感觉没问题。怎么也不明白