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

📄 图的领接表创建.c

📁 本数据结构学习包
💻 C
字号:
/*****************************************************/
/*                  图的邻接表创建算法               */
/*        文件名c_ljb.c  函数名:createadjgraph()    */
/*****************************************************/
#include <stdio.h>
#include "adjgraph.h"
#include <stdlib.h>
/*------建立无向图的邻接表算法-------*/
void createadjgraph(adjgraph *g)
    { int i,j,k;
      edgenode *s;
      printf("Please input n and e:\n");
      scanf("%d%d",&g->n,&g->e);              /*输入顶点数与边数*/
      getchar();
      printf("Please input %d vertex:",g->n);
      for(i=0;i<g->n;i++)
       {
	scanf("%c",&g->adjlist[i].vertex);    /*读入顶点信息*/
	g->adjlist[i].firstedge=NULL;         /*边表置为空表*/
       }
      printf("Please input %d edges:",g->e);
      for(k=0;k<g->e;k++)                     /*循环e次建立边表*/
        {
	 scanf("%d%d",&i,&j);                 /*输入无序对(i,j)*/
	 s=(edgenode *)malloc(sizeof(edgenode));
         s->adjvex=j;                         /*邻接点序号为j*/
	 s->next=g->adjlist[i].firstedge;
	 g->adjlist[i].firstedge=s;           /*将新结点*s插入顶点vi的边表头部*/
	 s=(edgenode *)malloc(sizeof(edgenode));
         s->adjvex=i;                         /*邻接点序号为i*/
	 s->next=g->adjlist[j].firstedge;
	 g->adjlist[j].firstedge=s;           /*将新结点*s插入顶点vj的边表头部*/
        }
   }
/*---函数print():输出邻接表存储结构---*/
void print(adjgraph g)
{  edgenode *p;
   int i;
  for (i=0;i<g.n;i++)
   { printf("%c  ",g.adjlist[i].vertex);
     p=g.adjlist[i].firstedge;
     while (p)
      { printf("%d-->",p->adjvex);
        p=p->next;
      }
     printf("\n");
   }
}
/*主函数*/
/*
main()
{adjgraph g;
 createadjgraph(&g);
 print(g);
 }
*/

⌨️ 快捷键说明

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