一个小问题

.千山. 2013-05-01 06:16:11
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
typedef struct arcnode //弧(无权)
{
int adjvex;
struct arcnode* next;
}edge;
typedef struct vexnode//顶点表
{
int vexdata;
struct arcnode* first;
}adjlist;

typedef struct N
{
adjlist v[MAX];
int numv,nume;
}Graph;
void InsertLine(Graph* g,int v1,int v2);
void DeleteLine(Graph* g);
void main()
{
int v1,v2,i;
Graph *g=(Graph*)malloc(sizeof(Graph));
for(i=1;i<=6;i++) //建立顶点表
g->v[i].vexdata=i;
scanf("%d %d",&v1,&v2);
while (v1!=0) //边
{
InsertLine(g,v1,v2);
scanf("%d %d",&v1,&v2);
}
DeleteLine(g); //删除边
}
//********************
void InsertLine(Graph* g,int v1,int v2)
{
edge* e,*t;
e=(edge*)malloc(sizeof(edge));
e->adjvex=v2;
e->next=NULL;
if(g->v[v1].first==NULL)
g->v[v1].first=e;
else
{
t=g->v[v1].first;
while(t->next)
t=t->next;
t->next=e;

}
}
//******************************
void DeleteLine(Graph* g)
{
int v1,v2;
edge *t,*p;
printf("请输入删除的边...\n");
scanf("%d %d",&v1,&v2);
t=g->v[v1].first;
while (t->adjvex!=v2)
{
p=t;
t=t->next;
if(t==NULL){printf("不存在此边!\n");return;}
}
p->next=t->next;

}

程序虽然不报错问题就是建立顶点表的时候,调试发现根本没能给vexdata赋值
...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaokai115 2013-05-02
  • 打赏
  • 举报
回复
错误在最后,见inline注释

#include <stdio.h>
#include <stdlib.h>
#define MAX 50
typedef struct arcnode //弧(无权) 
{
 int adjvex;
 struct arcnode* next;
}edge;
typedef struct vexnode//顶点表
{
int vexdata;
struct arcnode* first;
}adjlist;

typedef struct N
{
adjlist v[MAX];
int numv,nume;
}Graph;
void InsertLine(Graph* g,int v1,int v2);
void DeleteLine(Graph* g);
void main()
{
  int v1,v2,i;
  Graph *g=(Graph*)malloc(sizeof(Graph));
  for(i=1;i<=6;i++)           //建立顶点表
  g->v[i].vexdata=i;
  scanf("%d %d",&v1,&v2);
  while (v1!=0)             //边
  {
   InsertLine(g,v1,v2);
   scanf("%d %d",&v1,&v2);
  }
  DeleteLine(g); //删除边
}
//********************
void InsertLine(Graph* g,int v1,int v2)
{
edge* e,*t;
e=(edge*)malloc(sizeof(edge));
e->adjvex=v2;
e->next=NULL;
if(g->v[v1].first==NULL)
g->v[v1].first=e;
else
{
t=g->v[v1].first;
while(t->next)
t=t->next;
t->next=e;
     
}
}
//******************************
void DeleteLine(Graph* g)
{
  int v1,v2;
  edge *t,*p;
  printf("请输入删除的边...\n");
  scanf("%d %d",&v1,&v2);
  t=g->v[v1].first;
  while (t->adjvex!=v2)
  {
  p=t;
  t=t->next;
  if(t==NULL){printf("不存在此边!\n");return;}
  }
  p->next=t->next; // p没有初值,如果while循环没进去,p就是个野指针
  
}
疯狂的红豆 2013-05-02
  • 打赏
  • 举报
回复
有关图结构的介绍与代码详解请看我的博客: 基于邻接表的图http://blog.csdn.net/zlhy_/article/details/8232214 基于邻接矩阵的图http://blog.csdn.net/zlhy_/article/details/8232059
【为什么学习微信小程序?】   小程序开发为当下一种主流的开发形式,小程序开发已经不仅仅局限于互联网行业,传统行业同样也有海量的需求,掌握小程序开发不仅仅是掌握了一个新的开发技能,更可以增加大家的行业竞争力,无论是在岗位的提升,求职面试、或者个人创业都是有很大的帮助。掌握了小程序开发小程序也是一门相对比较容易上手的技术,因为小程序开发容纳了前端、后端、运维等岗位所需掌握的知识但又极为简单好理解,对于刚刚入门或者小白用户是一个可以快速掌握并成为一名程序猿的不二途径。 【推荐你学习这门课程的四大亮点】 1、完整成体系的小程序开发知识: 对于没有学习过小程序开发的同学,本课程由浅入深系统的向同学们讲解了小程序开发知识,将知识点串联起来,让同学们可以更好更快的掌握小程序开发。2、视频及相关功能开发的掌握: 借助于小程序开发使得视频方向的开发变的尤为简单,即使你是入门小白也可以熟练掌握小程序中视频的相关开发,其中涉及了视频的常规控制如播放暂停等也有比较流行的视频弹幕功能,并结合了一下视频开发中相关的性能优化问题,可以让同学们通过本课程的学习对于视频类的开发有更深层次的认识。3、打造智能闲聊小程序: 借助于网络上开放的人工智能接口,去实现智能闲聊功能,使得开发的过程不仅能够收获更多的知识也变得更加有趣。项目中虽然知识讲解了智能闲聊功能的调用,但是通过此功能的调用方法大家可以举一反三去使用更多的开发功能使得开发变得简单且有趣。4、掌握项目级开发知识及技巧: 本课程中融入了两大当前比较主流的项目实例,视频功能和人工智能。通过项目的练习不仅可以让大家掌握较为主流的项目方向且融入很多的中高级语法及项目开发知识,如ES6+的一些语法和模块化、组件化开发的知识。【课程内容设计】   设计本门课程时考虑到很多同学可能没有小程序开发相关经验,本门课程将由浅入深,渐进式的讲解知识点。我把课程分为了三个阶段分别为:初次接触、基础入门、实战提升。   1、初次接触:   主要给大家讲解小程序开发的相关知识,让大家在宏观上对向程序开发能有一定的概念。并且讲授的开发环境的搭建让大家对在开发前期做一个充分的热身。先激发起大家对线程序开发的热情,这样为下一步小程序的开发学习做一个铺垫。   2、基础入门:   这个阶段主要为入门的同学提供了一个比较全面的小程序开发基础知识知识汇总,并伴有实践的例子简单且易上手,让大家能够体验到小程序的开发乐趣,并未下一步的项目实战开发打定基础。   3、实战提升:   这个阶段为项目实践阶段,通过实战项目让大家深入了解和学习小程序开发,项目中同时融入了现在主流的视频内容,和有趣并贴近生活的智能闲聊功能,项目中涉及到的技术点也是由浅入深,同学们在掌握小程序的开发能力的同时也掌握了问题解决与深入学习的能力。 【实战项目展示】 【学习完课程你将收获】

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧