zoukankan      html  css  js  c++  java
  • C语言数据结构无向图

    #include<stdio.h>
    #include<stdlib.h>




    #define num 8




    struct nearnode{

    int order;
    nearnode* pnext;
    };


    struct topnode{

    char data[20];
    nearnode* phead;
    };


    struct Gra{

    topnode top[num];
    int topnum;
    int sidenum;
    };


    void create(Gra* gra){

    puts("请输入图的弧数 ");
    scanf("%d",&gra->sidenum);
    gra->topnum = num;
    for(int i = 0;i < num;i++){

    printf("请输入第%d个定点储存的数据信息 ",i+1);
    scanf("%s",gra->top[i].data);
    }
    for(int i = 0;i < gra->sidenum;i++){

    int temp_one;
    int temp_two;

    printf("请输入第%d条边的起始顶点 ",i+1);
    scanf("%d",&temp_one);
    printf("请输入第%d条边的终结顶点 ",i+1);
    scanf("%d",&temp_two);

    nearnode* newnode_one = NULL;
    newnode_one = (nearnode*)malloc(sizeof(nearnode));
    newnode_one->pnext = NULL;
    newnode_one->order = temp_one;

    if(gra->top[temp_two].phead == NULL){
    gra->top[temp_two].phead = newnode_one;
    }
    else{

    for(;gra->top[temp_two].phead->pnext != NULL;gra->top[temp_two].phead = gra->top[temp_two].phead->pnext); 
    gra->top[temp_two].phead->pnext = newnode_one;
    }

    nearnode* newnode_two = NULL;
    newnode_two = (nearnode*)malloc(sizeof(nearnode));
    newnode_two->pnext = NULL;
    newnode_two->order = temp_two;

    if(gra->top[temp_one].phead == NULL){

    gra->top[temp_one].phead = newnode_two;
    }
    else{

    for(;gra->top[temp_one].phead->pnext != NULL;gra->top[temp_one].phead = gra->top[temp_one].phead->pnext); 
    gra->top[temp_one].phead->pnext = newnode_two;
    }

    }
    }


    void viewer(Gra* gra){

    for(int i = 0;i < gra->topnum;i++){

    printf("第%d个边结点对应的是%c顶点的信息 ",i+1,i+65);
    }

    puts(" ");

    for(int i = 0;i < gra->topnum;i++){

    printf("第%d个顶点储存的信息是:%s ",i+1,gra->top[i].data);
    }

    puts(" ");

    for(int i = 0;i < num;i++){

    for(;gra->top[i].phead != NULL;gra->top[i].phead = gra->top[i].phead->pnext){


    printf("与第%d个顶点相连的边结点的序号为%d ",i+1,gra->top[i].phead->order);
    }
    }
    }




    int main(int argc,char** argv){

    Gra* gra = NULL;
    gra = (Gra*)malloc(sizeof(Gra));
    create(gra);
    viewer(gra);
    }
  • 相关阅读:
    经典问题的非经典解法
    经典问题之树的深度
    35、AndroidView的滑动方式
    30、Android属性动画
    31、Android矢量动画
    36、AndroidCanvas画布
    27、AndroidEventBus
    28、AndroidRxjava
    32、Android事件分发机制
    29、Android基本动画
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700742.html
Copyright © 2011-2022 走看看