zoukankan      html  css  js  c++  java
  • 图 的建立之邻接表

    点击鼠标自动生成顶点,

    包括图的深度遍历

    View Code
     1 #include <stdio.h>
    2 #include<stdlib.h>
    3
    4 typedef struct ArcNode
    5 {
    6 int data;
    7 struct ArcNode *nextarc;
    8 }ArcNode;
    9 typedef struct VexNode
    10 {
    11 char name[20];
    12 struct ArcNode *firstnext;
    13 int adjnum;
    14 }Vex_Node[20];
    15
    16
    17 typedef struct Graph
    18 {
    19 Vex_Node vex;
    20 int vexnum,arcnum;
    21 int kind;
    22 }Graph;
    23
    24
    25 void CreateGraph(Graph &g)
    26 {
    27
    28 printf("请输入顶点的个数和弧的个数\n");
    29 scanf("%d %d",&g.vexnum,&g.arcnum);
    30
    31 for(int i=0;i<g.vexnum;i++)
    32 {
    33 g.vex[i].firstnext = NULL;
    34 }
    35
    36 for(int k=0;k<g.vexnum;k++)
    37 {
    38
    39 printf("请输入顶点信息和邻接节点个数\n");
    40 scanf("%s %d",g.vex[k].name,&g.vex[k].adjnum);
    41
    42 for(int i=0;i<g.vex[k].adjnum;i++)
    43 {
    44 ArcNode *p = (ArcNode *)malloc(sizeof(ArcNode));
    45 p->nextarc = g.vex[k].firstnext; //逆序构建链表
    46 g.vex[k].firstnext = p;
    47 printf("邻接顶点位置\n");
    48 scanf("%d",&p->data);
    49 }
    50 }
    51 }
    52
    53
    54 void Display(Graph &g)
    55 {
    56
    57 for(int i=0;i<g.vexnum;i++)
    58 {
    59 ArcNode *p = g.vex[i].firstnext;
    60
    61 if(p!=NULL)
    62 {
    63 printf("边%s %s\n",g.vex[i].name,g.vex[p->data].name);
    64 }
    65 while(p->nextarc!=NULL)
    66 {
    67 printf("边%s %s\n",g.vex[i].name,g.vex[p->nextarc->data].name);
    68 p = p->nextarc;
    69
    70 }
    71 }
    72
    73 }
    74
    75
    76 int main()
    77 {
    78 Graph G;
    79 CreateGraph(G);
    80 Display(G);
    81
    82 return 0;
    83 }
     
     
  • 相关阅读:
    结构化分析工具之判定树
    结构化分析工具之判定表
    结构化分析工具之结构化语言
    结构化分析工具之数据字典
    结构化分析工具之数据流图
    结构化分析方法
    软件生存周期模型之V模型
    软件生存周期模型之喷泉模型
    软件生存周期模型之螺旋模型
    软件生存周期模型之原型模型
  • 原文地址:https://www.cnblogs.com/pipicfan/p/2299801.html
Copyright © 2011-2022 走看看