回 帖 发 新 帖 刷新版面

主题:有4个ERROR,大家帮忙看看

int MaxSize;//这是H1。H
#define MaxSize 100
typedef struct
{
    int list[MaxSize];
    int size;
}SeqList;

void ListInitiate(SeqList *l)
{
    l -> size = 0;
}

int ListLength(SeqList l)
{
    return l.size;
}

int ListInsert(SeqList *l, int i, int x)
{
    int j;
    if(l -> size >= MaxSize)
    {
        printf("error");
        return 0;
    }
    else
    {
        for(j = l -> size; j > i; j --)
        {
            l -> list[j] = l -> list[j - 1];
        }
        l -> list[i] = x;
        l -> size ++;
    }
    return 1;
}

int ListDelete(SeqList *l, int i, int *x)
{
    int j;
    *x = l -> list[i];
    for(j = i + 1; j <= l -> size - 1; j ++)
        l -> list[j - 1] = l -> list[j];
    l -> size --;
    return 1;
}

#include"H1.h"//这是H2。H
int MaxVertice;
typedef struct
{
    SeqList Vertices;
    int edge[MaxVertice][MaxVertice];
    int numOfEdge;
}AdjMGraph;

void Initiate(AdjMGraph *G, int n)
{
    int i, j;
    for(i = 0; i < n; i ++)
    {
        for(j = 0; j < n; j ++)
        {
            if(i == j)
            {
                G -> edge[i][j] = 0;
            }
            else
            {
                G -> edge[i][j] = MaxSize;
            }
        }
    }
    ListInitiate(&G -> Vertices);
    G -> numOfEdge = 0;
}

void InsertVertices(AdjMGraph *G, int vertice)
{
    ListInsert(&G -> Vertices, G -> Vertices.size, vertice);// ->错了
}

void InsertEdge(AdjMGraph *G, int v1, int v2, int weight)
{
    G -> edge[v1][v2] = weight;
    G -> numOfEdge ++;
}

void DeleteEdge(AdjMGraph *G, int v1, int v2)
{
    G -> edge[v1][v2] = MaxSize;
    G -> numOfEdge --;
}

void DeleteVertice(AdjMGraph *G, int v)
{
    int x, n, i, j;
    n = ListLength(G -> Vertices);
    for(i = v; i < n; i ++)
    {
        for(j = 0; j < n; j ++)
        {
            G -> edge[i][j] = G -> edge[i + 1][j];
        }
    }//删除第V行
    for(i = 0; i < n; i ++)
    {
        for(j = v; j < n; j ++)
        {
            G -> edge[i][j] = G -> edge[i][j + 1];
        }
    }//删除第V列
    ListDelete(&G -> Vertices, v, &x);
}

int GetFirstVex(AdjMGraph G, int v)//在图G中寻找序号为V的结点的第一个邻接结点
{
    int col;//列下标
    for(col = 0; col < G.Vertices.size; col ++)
    {
        if(G.edge[v][col] > 0 && G.edge[v][col] < MaxSize)
            return col;
        else 
            return -1;
    }
}

int GetNextVetice(AdjMGraph G, int v1, int v2)//在图G中寻找V1的邻接结点V2的下一个邻接结点
{
    int col;
    for(col = v2 + 1; col < G.Vertices.size; col ++)
    {
        if(G.edge[v1][col] > 0 && G.edge[v1][col] < MaxSize)
            return col;
        else 
            return -1;
    }
}

#include<stdio.h>
#include"h2.h"

#define MaxVertice 10
#define MaxEdge 100
#define MaxWeight 10000
typedef struct
{
    int row;
    int col;
    int weight;
}RowColWeight;

void CreatGraph(AdjMGraph *G, char v[], int n, RowColWeight E[], int e)
{
    int i, k;
    Initiate(G, n);
    for(i = 0; i < n; i ++)
    {
        InsertVertices(G, v[i]);
    }
    for(k = 0; k < e; k ++)
    {
        InsertEdge(G, E[k].row, E[k].col, E[k].weight);
    }

}

main()
{
    AdjMGraph gl;
    int i;
    char a[5] = {'a', 'b', 'c', 'd', 'e'}; 
    RowColWeight rcw[5] = {{0, 1, 10}, {0, 4, 20}, {1, 3, 30}, {2, 1, 40}, {3, 2, 50}};
    int n = 5, e = 5;
    CreatGraph(&gl, a, n, rcw, e);
    DeleteEdge(&gl, 0, 4);
    DeleteVertice(&gl, 3);
    printf("结点集合:");
    for(i = 0; i < gl.Vertices.size; i ++)
    {
        printf("%c", gl.Vertices.list[i]);
    }
    printf("\n");
    printf("权值集合");
    int j;
    for(i = 0; i < gl.Vertices.size; i ++)
    {
        for(j = 0; j < gl.Vertices.size; j ++)
        {
            printf("%d", gl.edge[i][j]);
        }
        printf("\n");
    }
}

回复列表 (共1个回复)

沙发


同学帮我调试好了

我来回复

您尚未登录,请登录后再回复。点此登录或注册