zoukankan      html  css  js  c++  java
  • 数据结构DFSBFS

      1 void nattolist(AdjMatrix a,AdjList *&g)
      2 {
      3     int i,j,n;
      4     n=a.n;
      5     ArcNode *p;
      6     for(i=0;i<n;i++)
      7         g[i]->firstarc=NULL;
      8     for(i=0;i<n;i++)
      9         for(j=n-1;j>=0;j--)
     10         if(a.edges[i][j]!=0)
     11     {
     12         p=(ArcNode*)malloc(sizeof(Arcnode));
     13         p->adjvex=j;
     14         p->nextarc=g[i]->firstarc;
     15         g[i]->firstarc=p;
     16     }
     17 }
     18 
     19 int getnum(AdjList *g)
     20 {
     21     int i,n=0,visited[MAXVEX];
     22     for(i=0;i<MAXVEX;i++)
     23         visited[i]=0;
     24     dfs(g,0);
     25     for(i=0;i<g->n;i++)
     26         if(visited[i]==0)
     27     {
     28         n++;
     29         dfs(g,i);
     30     }
     31     return n;
     32 }
     33 
     34 void dfs1(AdjList *g,int v)
     35 {
     36     int i;
     37     ArcNode *p;
     38     int visited[MAXVEX],top=-1,stack[MAXVEX];
     39     for(i=0;i<MAXVEX;i++)
     40         visited[i]=0;
     41     printf("%d ",v);
     42     top++;
     43     stack[top]=v;
     44     visited[v]=1;
     45     while(top>=0)
     46     {
     47         v=stack[top];
     48         top--;
     49         p=g[v]->firstarc;
     50         while(p!=NULL&&visited[p->adjvex]==1)
     51             p=p->nextarc;
     52         if(p==NULL)
     53             top--;
     54         else{
     55             v=p->adjvex;
     56             printf("%d ",v);
     57             visited[v]=1;
     58             top++;
     59             stack[top]=v;
     60         }
     61     }
     62 }
     63 
     64 
     65 #define MAXVEX 100
     66 struct vertex
     67 {
     68     int num;
     69     char data;
     70 };
     71 typedef struct graph
     72 {
     73     int n;
     74     int e;
     75     struct vertex vexs[MAXVEX];
     76     int edges[MAXNVEX][MAXVEX];
     77 }AdjMatrix;
     78 
     79 AdjMatrix creategraph()
     80 {
     81   int i,j,k,w,n,e;
     82   char b,t;
     83   AdjMatrix adj;
     84   printf("顶点数(n)和边数(e):");
     85   scanf("%d%d",&n,&e);
     86   adj.n=n;
     87   adj.e=e;
     88   for(i=0;i<n;i++)
     89   {
     90       printf(" 第%d个顶点的信息:",i+1);
     91       scanf("%c",&adj.vex[i].data);
     92       adj.vex[i].num=i;
     93   }
     94   for(i=0;i<n;i++)
     95     for(j=0;j<n;j++)
     96     adj.edges[i][j]=0;
     97   for(k=0;k<e;k++)
     98   {
     99       printf("第%d条边:\n",k+1);
    100       printf(" 起点:\n";
    101       scanf("%d",&b);
    102       printf(" 终点:");
    103       scanf("%d",&t);
    104       printf(" 权值:");
    105       scanf("%d",&w);
    106       i=0;
    107       while(i<n&&adj.vexs[i].data!=b)
    108         i++;
    109       if(i>=n)
    110         
    111   }
    112 }
    我有信心成功!
  • 相关阅读:
    表格的交集合集等的命令处理
    Linux中screen命令
    Linux中sed基础
    Linux中AWK基础
    聊聊开发中经历的几种后端语言
    C语言NXP S32K144 serial bootloader和C#语言bootloader PC端串口通信程序
    自己用C语言写NXP S32K144 serial bootloader
    C语言NXP S32K116 serial bootloader和C#语言bootloader PC端串口通信程序
    自己用C语言写NXP S32K116 serial bootloader
    C语言RH850 F1L serial bootloader和C#语言bootloader PC端串口通信程序
  • 原文地址:https://www.cnblogs.com/woaiyuanqi/p/3474044.html
Copyright © 2011-2022 走看看