当前位置:编程学习 > C#/ASP.NET >>

一个简单的程序帮忙看看哪儿错了啊

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

#define MAX_VERTEX_NUM 4 //最大顶点数

struct ArcNode{ //定义邻接点类型
int num;
char info;
struct ArcNode *next;
};

struct Vnode{ //顶点表的结点类型
char data; //顶点信息
struct ArcNode *link;
}AdjList [MAX_VERTEX_NUM]={'a',NULL,'b',NULL,'c',NULL,'d',NULL}; //创建结构体数组存储4个结点



void linked_list_Insert(int i,char x,struct Vnode *Adjp) //带头结点的单链表插入
{
struct ArcNode *p;
p=(struct ArcNode *)malloc(sizeof(struct ArcNode));
p->num=i;
p->info=x;
p->next=Adjp->link;
Adjp->link=p;
}


void linked_queue_Addqueue(int i,char x,struct ArcNode *rearp) //链队列的入队
{
struct ArcNode *p;
p=(struct ArcNode *)malloc(sizeof(struct ArcNode));
p->num=i;
p->info=x;
rearp->next=p; //原先队尾结点的指针指向新结点
rearp=p; //队尾指针指向新结点
}



void linked_queue_Dequeue(int *nump,struct ArcNode *frontp,struct ArcNode *rearp) //链队列的退队
{
struct ArcNode *p;
p=frontp->next; //暂存队头元素
*nump=p->num;
frontp->next=p->next; //队头元素所在结点摘链
if(p->next=NULL)
rearp=frontp;
free(p);
}



void BFSTraverse(struct Vnode *head,int n) //对图进行横向优先遍历,并输出遍历序列
{
int *mark;
int k;
int m;
mark=(int *)malloc(n*sizeof(int));
struct ArcNode *p;
for(k=0;k<n;k++) 
mark[k]=0; //初始化标志数组和队列

struct ArcNode *q=(struct ArcNode *)malloc(sizeof(struct ArcNode));
struct ArcNode *front=(struct ArcNode *)malloc(sizeof(struct ArcNode));
struct ArcNode *rear=(struct ArcNode *)malloc(sizeof(struct ArcNode));

printf("BFS遍历序列:");
for(m=1;m<=n;m++) //如果途中有2个结点之间没有通路(非连通图),则需要进行此循环
{
if(mark[m-1]==0)
{
printf("%c",(head+m-1)->data);
mark[m-1]=1; //从第一个结点开始访问,并入队
void linked_queue_Addqueue(m,(head+m-1)->data,rear);
while(front!=rear)
{
linked_queue_Dequeue(&k,front,rear); //从队列中取出结点
p=(head+k-1)->link;
while(p!=null)
{
k=p->num;
if(mark[k-1]=0) //依次检查其后续结点是否未访问,如是,则进行访问,入队
{
printf("%c",(head+k-1)->data);
mark[k-1]=1;
void linked_queue_Addqueue(k,(head+k-1)->data,rear);
}
p=p->next;
}
}
}
}
}




void linked_queue_Dequeue(int *nump,struct ArcNode *frontp,struct ArcNode *rearp) //链队列的退队
{
struct ArcNode *p;
p=frontp->next; //暂存队头元素
*nump=p->num;
frontp->next=p->next; //队头元素所在结点摘链
if(p->next=NULL)
rearp=frontp;
free(p);
}

void main()
{
void linked_list_Insert(3,"c",&AdjList[0]);
    void linked_list_Insert(2,"b",&AdjList[0]);
void linked_list_Insert(4,"d",&AdjList[2]);
void linked_list_Insert(1,"a",&AdjList[3]); //对每一个结点构造一个单链表
void BFSTraverse(AdjList,4);
}

--------------------编程问答-------------------- 我也新手 不过你这程序真心太长了 没耐心看啊 找到出错的那部分粘贴上来啊 --------------------编程问答-------------------- 代码比较长,你还是采用断点调试吧。 --------------------编程问答-------------------- 这种问题真的没有耐心看啊。 --------------------编程问答-------------------- 朋友,你在考研帮助你人的耐心。 --------------------编程问答-------------------- 真心好长 --------------------编程问答-------------------- if(p->next=NULL)????????
void linked_list_Insert(3,"c",&AdjList[0]);??????????????
引自你的代码
劝你先把基本语法学好
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,