| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:求助!关于图中邻接表语句的解读 不能理解什么意思 郁闷了很久!
只看楼主 加入收藏
安然之风
Rank: 2
等 级:论坛游民
帖 子:43
专家分:23
注 册:2011-1-6
结帖率:63.64%
收藏
已结贴  问题点数:20 回复次数:2 
求助!关于图中邻接表语句的解读 不能理解什么意思 郁闷了很久!
程序是这样子的:
就是这几句不了解:    ptr->adjvex=v2;   
                     ptr->next=adjlist[v1].firstarc;
                     adjlist[v1].firstarc=ptr;
麻烦各位帮我解释解释,最好帮我画画图,注释注释,帮我梳理梳理。不胜感激!!!

#define MAX_VEX  100         // 最大顶点数为100
#include <stdio.h>
#include<malloc.h>
typedef struct node         // 定义表结点
{  
  int adjvex;                  // 邻接顶点域
  struct node *next;         // 指向下一个邻接顶点的指针域
  /*char  info;*/             //若为网图,要表示边上信息,则应增加一个数据域info
} ARCNODE;
typedef struct vexnode           // 定义头结点
{  
  int vertex;                   // 顶点域
  ARCNODE *firstarc;          // 边表头指针
} VEXNODE;                       //VEXNODE是以邻接表方式存储的图类型

VEXNODE adjlist[MAX_VEX];      /*定义头结点数组*/  
int creatadjlist()              /*建立邻接表*/
{      
    ARCNODE *ptr;
    int arcnum,vexnum,k,v1,v2;
    printf("请输入顶点数和边数(输入格式为:顶点数,边数):");
    scanf("%d,%d",&vexnum,&arcnum);    /*输入图的顶点数和边数(弧数)*/
    for(k=1;k<=vexnum;k++)
    adjlist[k].firstarc=0;       /*为邻接链表的adjlist数组各元素的链域赋初值*/
    for(k=0;k<arcnum;k++)          /*为adjlist数组的各元素分别建立各自的链表*/
    {
     printf("v1,v2=");
     scanf("%d,%d",&v1,&v2);
     ptr=(ARCNODE*)malloc(sizeof(ARCNODE));  
/*给结点V1 的相邻接结点V2 分配内存空间*/
     ptr->adjvex=v2;     /*将顶点v2插入到链表中,使得结点插入后单链表仍然有序*/
     ptr->next=adjlist[v1].firstarc;
     adjlist[v1].firstarc=ptr;     /*将邻接点V2 插入表头结点V1 之后*/
                                        /*对于有向图,接下来的四行语句要删除*/   
     ptr=(ARCNODE*)malloc(sizeof(ARCNODE));  
/*给结点V2 的相邻接结点V1 分配内存空间*/
     ptr->adjvex=v1;    /*将顶点v1插入到链表中,使得结点插入后单链表仍然有序*/
     ptr->next=adjlist[v2].firstarc;
     adjlist[v2].firstarc=ptr; /*将邻接点V1 插入表头结点V2之后*/
  }
  return(vexnum);
}

main()                    /*主函数*/
{
int i,n;
ARCNODE *p;
n=creatadjlist();              /*建立邻接表并返回顶点个数*/
 printf("所建图的邻接表为:\n");
 for(i=1;i<=n;i++)             /*输出邻接表中个链表的信息*/
 {
   printf("%d==>",i);
   p=adjlist[i].firstarc;
   while(p!=NULL)
   {
     printf("---->%d",p->adjvex);
     p=p->next;
   }
   printf("\n");
 }
}

搜索更多相关主题的帖子: 不胜感激 include 
2011-08-08 18:59
世界模型
Rank: 4
等 级:业余侠客
威 望:1
帖 子:240
专家分:226
注 册:2010-9-12
收藏
得分:7 
就是相当于链表的头插入啊
看看书上的图体会下就知道啦
2011-08-08 20:44
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:7 
阁下学过线性表的链式存储吧?像这种单链表的结点插入应该会的啊!

A real warrior never quits.
2011-08-10 12:59
快速回复:求助!关于图中邻接表语句的解读 不能理解什么意思 郁闷了很久!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012343 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved