标题:大大的[求助]结构体的重定义!
只看楼主
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
 问题点数:0 回复次数:12 
大大的[求助]结构体的重定义!
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}*link;
为什么是重定义啊?
用了一种方法是:
#ifndef MYDEFINEFLIE_H
#define MYDEFINEFILE_H
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}*link
#enddef
来实现,不过我还是不明白书上的这种定义为什么是错误的!
还有什么好的方法,或者大家给我说说为什么这么用是错误的!
谢谢了
搜索更多相关主题的帖子: 定义 结构体 node elemtype struct 
2007-10-27 23:45
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 

还有大家看看这个有错误怎么改;
发现在红色的部分L->length的初始化是一个随机的数,在vc下不能运行,在gcc下是可以,但是结果
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
{ElemType elem[MaxSize];
int length;
}SqList;

void main()
{SqList *L;
ElemType e;
void InitList(SqList *L);
int ListtEmpty(SqList *L);
int ListLength(SqList *L);
void DispList(SqList *L);
int GetElem(SqList *L,int i,ElemType e);
int ListInsert(SqList *L,int i,ElemType e);
printf("Init the List\n");
InitList(L);
printf("input a,b,c,d,e\n");
ListInsert(L,1,'a');
ListInsert(L,2,'b');
ListInsert(L,3,'c');
ListInsert(L,4,'d');
ListInsert(L,5,'e');
printf("output L:\n");
DispList(L);
printf("the L length=%d\n",ListLength(L)) ;

}
void InitList(SqList *L)
{L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
int ListEmpty(SqList *L)
{return(L->length==0);
}
int ListLength(SqList *L)
{return (L->length);
}
void DispList(SqList *L)
{int i;
if (ListEmpty(L)) return;
for(i=0;i<L->length;i++)
printf("%c",L->elem[i]);
printf("\n");
}

int ListInsert(SqList *L,int i,ElemType e)
{int j;
if(i<1||i>L->length)
return 0;
i--;
for(j=L->length;j>i;j--)
L->elem[j]=L->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}



方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:04
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
[URL=http://bbs.bc-cn.net/viewthread.php?tid=181108]http://bbs.bc-cn.net/viewthread.php?tid=181108[/URL]

看看这个帖子里第一个例子错的原因
也就是你的InitList函数错的原因

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-28 00:13
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
重定义是因为在你没加上下面这段时引用了头文件"mydefinefile.h"至少两次吧
#ifndef MYDEFINEFLIE_H
#define MYDEFINEFILE_H
// ...
#endif

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-28 00:16
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
我的内存能分配啊,L->length却不能分配,
我跟踪过的

方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:20
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
你可以看看我用它的来源是什么!

http://bbs.bc-cn.net/viewthread.php?tid=176545&star=at#

方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:24
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
还有不是你的回答的原因!

方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:25
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
以下是引用yangzhifu在2007-10-28 0:20:18的发言:
我的内存能分配啊,L->length却不能分配,
我跟踪过的

你没有仔细看我给你的那个链接了吧?
我认为回帖应该已经说的比较清楚了

void InitList(SqList *L)里的这个L只是你在main函数里申明的L的副本。。。。


[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-28 00:26
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
我将很郑重的说:
谢谢!

方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:35
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
看看第一个呢?

方寸之内,剖天下; 方坛之内,析自我;
2007-10-28 00:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-181313-1-1.html




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

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