沈阿清
2021-06-21 12:04
采纳率: 100%
浏览 18

C的编译器里没有"datastru.h"这个头文件,要用什么替换?

把这个头文件注释掉的话,BSTNODE就不能用了,求救大神

#include<stdio.h>

#include<malloc.h>

#define VEXTYPE int

#define ADJTYPE int

#define MAXLEN 40

#define MAX 10000

#define MAX_VERtEX_NUM 20 

#define VRType int                            

#define InfoType char                       

#define VertexType int    

typedef enum{DG=1,DN,UDG,UDN}GraphKind;

bool visited[MAX_VERtEX_NUM];               

typedef struct {

    VRType adj;                             

    InfoType *info;                        

}ArcCell,AdjMatrix[MAX_VERtEX_NUM][MAX_VERtEX_NUM];

typedef struct{

 int vexs[20];

 int arcs[20][20];

 int vexnum,arcnum;

 GraphKind kind;

}MGraph;

//int visited[20];

typedef struct{

 int front;

 int rear;

 int *base;

}SqQueue;

int InitQueue(SqQueue *Q){

 Q->base=(int *)malloc(20*sizeof(int));

 Q->front=Q->rear=0;

 return(1);

int QueueEmpty(SqQueue Q){

 return !((Q.rear-Q.front+20)%20);

}

int EnQueue(SqQueue *Q,int e){

 if((Q->rear+1)%20==Q->front) return (0);

 Q->base[Q->rear]=e;

 Q->rear=(Q->rear+1)%20; 

 return (1);

}

int DeQueue(SqQueue *Q,int *e){

 if(Q->front==Q->rear) return 0;

 *e=Q->base[Q->front];

 Q->front=(Q->front+1)%20;

 return 1;

}

void CreateUDG(MGraph *G){

 int i,j,k;

 int v1,v2;

 printf("\n\t\tinput vexnum and arcnum(输入节点个数与边的条数):");

 scanf("%d,%d",&(G->vexnum),&(G->arcnum));

 for(i=0;i<G->vexnum;i++){

  printf("\n\t\tinput %d vexs:",i+1);

  scanf("%d",&(G->vexs[i]));

 }

 for(i=0;i<G->vexnum;i++){

  for(j=0;j<G->vexnum;j++)

   G->arcs[i][j]=0;

 }

 for(k=0;k<G->arcnum;k++){

  printf("\t\t input %d side and vexs(输入哪两个结点间有边)以,分隔:",k+1); 

  scanf("%d,%d",&v1,&v2);

  for(i=0;v1!=G->vexs[i];i++);

  for(j=0;v2!=G->vexs[j];j++);

  G->arcs[i][j]=1;G->arcs[j][i]=G->arcs[i][j]; 

 }

}

void CreateUDN(MGraph *G){

 int i,j,k,w;

 int v1,v2;

 printf("\n\t\tinput vexnum and arcnum: ");

 scanf("%d,%d",&(G->vexnum),&(G->arcnum));

 for(i=0;i<G->vexnum;i++){

  for(j=0;j<G->vexnum;j++)

   G->arcs[i][j]=1000;

 }

 for(k=0;k<G->arcnum;k++){

  printf("\t\t input %d side and vexs and weight: 以,分隔:",k+1); 

  scanf("%d,%d",&v1,&v2);

  for(i=0;v1!=G->vexs[i];i++);

  for(j=0;v2!=G->vexs[j];j++);

  G->arcs[i][j]=w;

  G->arcs[j][i]=G->arcs[i][j]; 

 }

}

void CreateDG(MGraph *G){//gai

 int i,j,k;

 int v1,v2;

 printf("\n\t\tinput vexnum and arcnum: ,");

 scanf("%d,%d",&(G->vexnum),&(G->arcnum));

 for(i=0;i<G->vexnum;i++){

  printf("\n\t\tinput %d vexs: ",i+1);

  scanf("%d",&(G->vexs[i]));

 }

 for(i=0;i<G->vexnum;i++){

  for(j=0;j<G->vexnum;j++)

   G->arcs[i][j]=0;

 }

 for(k=0;k<G->arcnum;k++){

  printf("\t\t input %d side and vexs: 以,分隔:",k+1); 

  scanf("%d,%d",&v1,&v2);

  for(i=0;v1!=G->vexs[i];i++);

  for(j=0;v2!=G->vexs[j];j++);

  G->arcs[i][j]=1;

 }

}

void CreateDN(MGraph *G){

 int i,j,k,w;

 int v1,v2;

 printf("\n\t\tinput vexnum and arcnum: ");

 scanf("%d,%d",&(G->vexnum),&(G->arcnum));

 for(i=0;i<G->vexnum;i++){

  printf("\n\t\tinput %d vexs: ",i+1);

  scanf("%d",&(G->vexs[i]));

 }

 for(i=0;i<G->vexnum;i++){

  for(j=0;j<G->vexnum;j++)

   G->arcs[i][j]=1000;

 }

 for(k=0;k<G->arcnum;k++){

  printf("\t\t input %d side and vexs and weight: 以,分隔:",k+1); 

  scanf("%d,%d,%d",&v1,&v2,&w);

  for(i=0;v1!=G->vexs[i];i++);

  for(j=0;v2!=G->vexs[j];j++);

  G->arcs[i][j]=w;

 }

}

void print(MGraph *G){

 int i,j;

 printf("\n\n MGraph is: \n");

 for(i=0;i<G->vexnum;i++){

  printf("\n");

  for(j=0;j<G->vexnum;j++)

   printf("\t%d",G->arcs[i][j]);

 }

}

int FirstAdjVex(MGraph G,int v){

    for(int i=0;i<G.vexnum;i++){

        if(G.arcs[v][i].adj) return i;

    }

    return -1;

}

int NextAdjVex(MGraph G,int v,int w){

    for(int i=w+1;i<G.vexnum;i++){

        if(G.arcs[v][i].adj) return i;

    }

    return -1;

}

void visitVex(MGraph G, int v){

    printf("%d ",G.vexs[v]);

}

void DFS(MGraph G,int v){

    visited[v] = true;

    visitVex(G,v); 

    for(int w = FirstAdjVex(G,v); w>=0; w = NextAdjVex(G,v,w)){

        if(!visited[w]) DFS(G,w);

    }

}

void DFSTraverse(MGraph G){

    int v;

    for( v = 0; v < G.vexnum; ++v) visited[v]=false;

    for( v = 0; v < G.vexnum; v++){

        if(!visited[v]) DFS( G, v);

    }

}

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qfl_sdu 2021-06-21 12:28
    已采纳

    datastru.h这个头文件里应该是定义了一些结构体或者宏定义或者全局变量,代码从哪来的就跟谁要一下这个文件,然后添加到你的工程里就可以了。

    打赏 评论

相关推荐 更多相似问题