⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aa.c

📁 这是我学习数据结构时用过的程序。索性打包传上去。数据结构实验用。
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 5
int visited[maxsize];

typedef struct arcnode
{ int adjvex;
  struct arcnode *next;
}arcnode;

typedef struct Vnode
{ int data;
  arcnode *firstarc;
}vnode;

typedef struct graph
{ vnode adjlist[maxsize];
  int vexnum,arcnum;
}graph;

int m[maxsize][maxsize];
void creatgraph(graph *g)
{ int i,j,k,n,e;
  arcnode *p;
  printf("\nInput vexnumber:");
  scanf("%d",&n);
  printf("Input acrnumber:");
  scanf("%d",&e);
  g->vexnum=n;
  g->arcnum=e;
  for(i=0;i<n;i++)
   { g->adjlist[i].data=i+1;
     g->adjlist[i].firstarc=NULL;
   }
  for(k=1;k<=e;k++)
   { printf("Input vex's arc:");
     scanf("%d",&i);
     printf("Input arc position:");
     scanf("%d",&j);
     p=(arcnode*)malloc(sizeof(arcnode));
     p->adjvex=j-1;
     p->next=g->adjlist[i-1].firstarc;
     g->adjlist[i-1].firstarc=p;
   }
}


void DFS(graph *g,int v)
{ arcnode *w;
  visited[v]=1;
  printf("%d",g->adjlist[v].data);
  w=g->adjlist[v].firstarc;
  while(w!=NULL)
   { w=w->next;
     if(visited[w->adjvex]==0)  DFS(g,w->adjvex);
     w=w->next;
   }
}


void DFStrave(graph *g)
{ int v;
  for(v=0;v<g->vexnum;++v)  visited[v]=0;
  for(v=0;v<g->vexnum;++v)
     if(!visited[v])   DFS(g,v);
}


void main()
{ graph *g;
  arcnode *w;
  int i,j;
  for(i=0;i<maxsize;i++)
     for(j=0;j<maxsize;j++)  m[i][j]=0;
  g=(graph*)malloc(sizeof(graph));
  creatgraph(g);
  DFStrave(g);
  for(i=0;i<10;i++)
   { if(g->adjlist[i].firstarc!=NULL)
      { w=g->adjlist[i].firstarc;
	do
	 { m[i][w->adjvex]=1;
	   w=w->next; }while(w!=NULL);
      }
   }
  for(i=0;i<maxsize;i++)
   { printf("\n");
    for(j=0;j<maxsize;j++)
	   printf("%d",m[i][j]);
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -