| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:数据结构 图的问题
只看楼主 加入收藏
青衣秀锦年
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-12-5
结帖率:33.33%
收藏
 问题点数:0 回复次数:4 
数据结构 图的问题
#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
#define False 0
#define True 1
#define Null 0
#define maxsize 20
#define maxvertexnum 20
typedef struct node{
    int adjvex;
    struct node *next;
}edgenode;

typedef struct {
    char vertex;
    edgenode *link;
}vexnode,AdjList[maxvertexnum];

typedef struct{
AdjList adjlist;
int n,e;
}Graph;
typedef struct{
    int *data;
    int *top;
}seqstack;
vexnode g[maxvertexnum];
int visited[maxvertexnum];
void CreatAdjList(Graph &G){
    int i,j,k;
    edgenode *s;
    char c;
    printf("please input the set points and the number of edges:\n");
     scanf("%d,%d",&G.n,&G.e);
     c=getchar();
    printf("please input vertex information ( vertex number ):\n");
    for(i=1;i<=G.n;i++){
        printf("The %d vertices",i);
        scanf("%c",&G.adjlist[i].vertex);
        c=getchar();
        G.adjlist[i].link=NULL;
    }
    printf("please input the edge information():\n");
    for(k=1;k<=G.e;k++){
        printf("please enter please input %d edges starting vertex number:\n",k);
        scanf("%d",&i);
        printf("please enter please input %d edges with a vertex number:\n",k);
        scanf("%d",&j);
        s=(edgenode*)malloc(sizeof(edgenode));
        s->adjvex=j;
        s->next=G.adjlist[i].link;
        G.adjlist[i].link=s;
    }
}

void DisplayAdjList(Graph G)
 {
    int i;
    edgenode *q;
    for(i=1;i<=G.n;++i)
    {
    q=G.adjlist[i].link;
    printf("%d",i);
    while(q!=NULL)
    {
    printf("->%d",q->adjvex);
    q=q->next;
    }
  printf("\n");
    }
}

void DFSAL(Graph G)
{
    edgenode *p;
    seqstack s;
    int i=1,t;
    for(i=1;i<=G.n;i++)  
        visited[i]=0;
    printf("This is a depth-first traversal, traversal order:\n");
    s.data=(int*)malloc(maxsize*sizeof(seqstack));
    s.top=s.data;   
    for(i=1;i<=G.n;i++)
    {
        p=G.adjlist[i].link;   
        t=i;
            if(p==NULL)
            {
                if(!visited[t])               
                {
                    printf("%c",G.adjlist[t].vertex);
                    visited[t]=True;
                }
                continue;
            }
        do{
            if(p==NULL)
            {
                s.top--;
                p=G.adjlist[*s.top].link;            
                if(p!=NULL){
                    t=p->adjvex;               
                }
            }
            else if(!visited[t])
            {
                printf("%c",G.adjlist[t].vertex);
                visited[t]=True;
                if(G.adjlist[t].link==NULL)continue;               
*s.top=t;
                s.top++;            
                p=G.adjlist[t].link;            
                if(p==NULL)
                {
                    if(!visited[t])printf("%c",G.adjlist[t].vertex);                                                        
                }
                else t=p->adjvex;
            }
            else

            {               
                p=p->next;               
if(p!=NULL)t=p->adjvex;
            }
        }while(s.top!=s.data);
    }
}


void BFSAL(Graph G){
    int v,Q[maxsize];
    edgenode * w;
    printf("This is the breadth priority traversal, traversal order:\n");
    int front=0,rear=0;
    for(v=1;v<=G.n;v++)  
        visited[v]=0;   
    for(v=1;v<=G.n;v++)
       if(!visited[v])
       {
        visited[v]=1;
        printf("%c",G.adjlist[v].vertex);
        Q[rear]=v;
        rear++;
        while (front!=rear)
        {
          front++;   
          w=G.adjlist[v].link;
          while(w){
              if(!visited[w->adjvex])
              {
                  visited[w->adjvex]=1;
                  printf("%c",G.adjlist[w->adjvex].vertex);
                  Q[rear]=w->adjvex;            
                  rear++;
              }
              w=w->next;
          }
        }
       }
}
  

void main(){
    Graph G;
int choice;
    char ch;   
 printf("------create the graph adjacency list storage");
CreatAdjList(G);
printf("have created a map of the adjacent table\n");
DisplayAdjList(G)
    while(ch!='n'){
         printf("\nPlease select the operating:");
         printf("\n1------depth first traversal:");
         printf("\n2------breadth priority traversal");
         printf("\n3-----sign out\n");
     scanf("%d",&choice);
         switch(choice){
         case 1:DFSAL(G);break;
         case 2:BFSAL(G);break;
         case 3:ch='n';break;
         default:ch='n';
         }
}
     }

 最后实行之后 出现Declaration syntax error  不知道怎么办?
搜索更多相关主题的帖子: include False 
2011-12-06 17:56
lichen7473
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2011-10-19
收藏
得分:0 
无注释  鸭梨大

个人观点,因水平有限,出错不要鄙视,欢迎指点!
2011-12-06 18:22
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 楼主 青衣秀锦年
main函数里这句没分号
DisplayAdjList(G)

总有那身价贱的人给作业贴回复完整的代码
2011-12-06 18:47
青衣秀锦年
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-12-5
收藏
得分:0 
回复 3楼 embed_xuel
加了分号 可是 最后还是在void GreatAdjList(Graph &G)
2011-12-07 15:37
青衣秀锦年
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-12-5
收藏
得分:0 
出现问题了 还是跟上次一样的问题
2011-12-07 15:37
快速回复:数据结构 图的问题
数据加载中...
 
   



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

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