| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖
标题:图的邻接链表建立和深度遍历(程序纠错)
只看楼主 加入收藏
CHTEARS
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-10-29
结帖率:0
收藏
 问题点数:0 回复次数:1 
图的邻接链表建立和深度遍历(程序纠错)
#include "iostream.h"
#include "malloc.h"
#include "stdio.h"
#define MaxVertexNum 50
bool visited[MaxVertexNum];   
typedef struct node{
    char adjvex;
    struct node *next;
 }EdgeNode;  
typedef struct vnode{
    char vertex;  
    EdgeNode *firstedge;
 }VertexNode;  
typedef VertexNode AdjList[MaxVertexNum];
typedef struct {      
    AdjList adjlist;   
     int n,e;   
} ALGraph;      
void CreatALGraph(ALGraph &G)
   {   
    int i,j,k;  
    EdgeNode *s;
    printf("请输入顶点数和边数: ");
    scanf("%d %d",&(G->n),&(G->e));  
    printf("请输入顶点的信息:");   
    for(i=0;i<G->n;i++)  
    { scanf("\n%c",&G->adjlist[i].vertex);
    G->adjlist[i].firstedge=NULL;
    }      
    printf("请输入由两个顶点构成的边:\n");     
    for(k=0;k<G->e;k++)   
    {
        scanf("\n%d %d",&i,&j);
        s=(EdgeNode *)malloc(sizeof(EdgeNode));   
        s->adjvex=j;   
        s->next=G->adjlist[i].firstedge;     
        G->adjlist[i].firstedge=s;   
        s=(EdgeNode *)malloc(sizeof(EdgeNode));   
        s->adjvex=i;        
        s->next=G->adjlist[j].firstedge;   
        G->adjlist[j].firstedge=s;  
    }  
 }  
void DFS(ALGraph G)
    {   int i;
        for(i=0;i<G->n;i++)   
    visited[i]=FALSE;
    for(int i=0;i<G->n;i++)        
        if(!visited[i])     
            DFSM(G,i);   
    }     
void DFSM(ALGraph G,int i)
{
        EdgeNode *p;      
        printf("访问结点:%c\n",G->adjlist[i].vertex);  
        visited[i]=TRUE;
        p=G->adjlist[i].firstedge;
        while(p)
        {   
                if(!visited[p->adjvex])
                    DFSM(G,p->adjvex);  
                p=p->next;  
        }  
    }
void main()
 {
   ALGraph g;
   CreatALGraph(g);
   DFS(g);
}
搜索更多相关主题的帖子: include 
2014-12-08 21:41
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:0 
void CreatALGraph(ALGraph &G)
函数错误一大把,主要是指针和引用不分。
还有结构体
typedef struct node{
    char adjvex;
    struct node *next;
}EdgeNode;  
typedef struct vnode{
    char vertex;  
    EdgeNode *firstedge;
}VertexNode;  
中adjvex和vertex设置为char类型,似乎不太妥,因为你在程序中用到了“s->adjvex=j;   ”,一般是把这两个量设置为int类型,这样相当于节点在矩阵中的坐标。
2014-12-10 08:07
快速回复:图的邻接链表建立和深度遍历(程序纠错)
数据加载中...
 
   



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

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