沈阿清 2021-06-21 12:04 采纳率: 50%
浏览 64
已采纳

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?