| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 945 人关注过本帖
标题:似乎是内存错误,大家帮忙看看
只看楼主 加入收藏
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
 问题点数:0 回复次数:12 
似乎是内存错误,大家帮忙看看

程序运行结果正确,但在运行完后,会出现一个发送错误的对话框,不知为什么???

#include<stdio.h>
#include<stdlib.h>
#define maxsize 10

typedef struct Pnode
{
int num;
char data;
struct Pnode *next;
}*pnode;

struct Hnode
{
char data;
pnode next;
};

void creatgraph( int *v );
void disgraph ( int v );
void depthsearch( int x, int *visited );
struct Hnode head[maxsize];

void main( void )
{
int v, visited[maxsize]={0};
creatgraph( &v );
disgraph( v );
depthsearch(1,visited);
}

void creatgraph( int *v )
{
int i, s, f, e;
pnode p, q;
printf("请输入 v and e: ");
scanf("%d%d",v,&e);
getchar();
for( i=1; i <= *v; i++ )
{
printf("请输入第 %d 个顶点信息 ",i);
scanf("%c",&head[i].data);
getchar();
head[i].next=NULL;
}
for( i=1; i <= e; i++ )
{
printf("请输入第 %d 条边起点号和终点号 ",i);
scanf("%d%d",&s,&f);
getchar();
p=(pnode)malloc(sizeof(struct Pnode));
q=(pnode)malloc(sizeof(struct Pnode));
p->data=head[s].data;
p->num=s;
q->data=head[f].data;
q->num=f;
p->next=head[f].next;
head[f].next=p;
q->next=head[s].next;
head[s].next=q;
}
q=NULL; p=NULL;
}

void disgraph( int v )
{
int k;
pnode p;
for( k=1; k <= v; k++ )
{
printf(" [%d,%c] =>",k,head[k].data);
p=head[k].next;
while( p != NULL )
{
printf(" (%d,%c) ->",p->num,p->data);
p=p->next;
}
printf(" ^ \n");
}
p=NULL;
}

void depthsearch( int x, int *visited )
{
if( visited[x] == 1 ) exit(0);
pnode p=NULL;
printf(" [%d,%c] =>",x,head[x].data);
visited[x]=1;
p = head[x].next;
while( visited[p->num] == 1 && p != NULL )
p = p->next;
depthsearch( p->num,visited );
p = NULL;
}

搜索更多相关主题的帖子: 内存 
2006-05-28 22:35
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
这是什么?图吗?图结构是你这样吗

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-29 00:36
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

#include <stdio.h>
#define N 10 /* 顶点的最大个数 */

typedef struct arc
{
int index; /* 某顶点在数组中的序号 */
struct arc *nextarc;
}Arc; /* 相关边的信息 */

typedef struct
{
int info; /* 存放顶点的信息 */
Arc *firstarc; /* 每个顶点的头指针 */
}Graph;

static int LocateNode(Graph g[], int node);

int main(void)
{
int i, j, k, n, e, node1, node2; /* n 代表顶点的个数,e 代表边的数量 */
Arc *new1, *new2; /* node1 and node2 代表顶点 */
Graph g[N];

printf("Enter n and e: "); /* n代表顶点数,e代表边数 */
scanf("%d %d", &n , &e); /* 读取顶点和边的数量 */

printf("Enter Node Information: ");
for (k = 0; k < n; k++)
{
scanf("%d", &g[k].info); /* 读取顶点的信息 */
g[k].firstarc = NULL; /* 初始化每个结点的头指针 */
}

printf("Enter arc order is arc-tail, arc-head: "); /* 输入顺序为弧尾和弧头 */
for (k = 0; k < e; k++)
{
scanf("%d %d", &node1, &node2);

i = LocateNode(g, node1); /* 查找弧尾的数组中的序号 */
j = LocateNode(g, node2); /* 查找弧头在数组中的序号 */

new1 = (Arc*)malloc(sizeof(Arc));
new1 -> index = j;
new1 -> nextarc = g[i].firstarc;
g[i].firstarc = new1;

new2 = (Arc*)malloc(sizeof(Arc));
new2 -> index = i;
new2 -> nextarc = g[j].firstarc;
g[j].firstarc = new2;
}

printf("The Graph Structure: \n");
for (i = 0; i < n; i++)
{
printf("i = %d ", i);
node1 = g[i].info;
printf("info: %d ", node1);
new1 = g[i].firstarc;
while (new1)
{
printf("-->%d", new1 -> index);
new1 = new1 -> nextarc;
}
putchar('\n');
}

return 0;
}



static int LocateNode(Graph g[], int node)
{
int i;

for (i = 0; i < N; i++)
{
if (g[i].info == node) /* 查找结点的数组中的序号 */
{
return i;
}
}
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-29 00:38
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 

答非所问

2006-05-29 08:28
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

答对了你给钱啊


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-29 09:55
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
2006-05-29 19:01
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
用的是VC吧..或者C-FREE 应该是内存泄露的问题...

不过具体解决我也说不好..需要经过很多测试才能解决!.

TC下应该没这种情况.所以我做这种题全部用TC!为了避免不必要的麻烦!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-29 20:28
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
倒,我那是不是也是内存漏洞啊,我倒

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-29 20:58
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 
有malloc()怎么没有free呢

路漫漫其修远兮 吾将上下而求索
2006-05-29 22:36
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
看不明白这个题目是做什么的....

淘宝杜琨
2006-05-30 01:09
快速回复:似乎是内存错误,大家帮忙看看
数据加载中...
 
   



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

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