| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 741 人关注过本帖
标题:C数据结构的一个小问题
只看楼主 加入收藏
刘半仙
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-2-11
收藏
 问题点数:0 回复次数:7 
C数据结构的一个小问题

首先先给大家看一段数据结构书上的程序(清华出的数据结构C语言版)
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;

int InitList_Sq(Sqlist &L)
{
...
}

我的问题一:

在C语言书中(清华的漳浩强的C程序设计第二版)函数的参数没有&+变量的形式,我只知道&是取变量地址的意思,如果这里是取变量的地址的意思,那么&L有什么意义呢?如果说Sqlist &L是想表示传进来的变量是个地址为什么不用指针的形式即Sqlist *L

再看一个从数据结构书中摘抄下来的一段线性结构的抽象定义
ADT Llist{
D={ai | ai 属于 ElemSet ,i=1,2,...n n>=0}
R={<ai-1,ai> | ai-1 ,ai 属于 D , i=2,3,...n}
InitList(&L)
DestroyList(&L)
ListERmpty(L)
ListLength(L)
GetElem(L,i,&e)
...
}
从上边的定义可以看出有写L前边用了&有些却没用,但是可气的是有些变量前边也用了&
总之我的问题是

在函数定义时参数列表中出现的&是什么意思?

问题二:
请看下边代码:

typedef struct LNode ----------1
{
int data;
struct LNode *next; ----------2
}LNode,*LinList

首先允许用我的理解解释一下上边代码
typedef 语句是把结构体用LNode,和*LinList“代替”也就是说可以用LNode来定义这个结构体变量,用*LinList来定义这个结构体的指针变量,这样在后编程是就不用写"struct LNode +结构体变量名"这样麻烦的定义了。

我的问题是标号1地方的LNode可不可以去掉,然后在标号2的地方定义*next变量的时候用LNode *next!

问题很简单,不过不清楚真的很闹心,请哪位大侠点播一下,小弟先在这儿谢过~~罐水的请到别地儿看看~

搜索更多相关主题的帖子: 数据结构 
2006-02-11 15:40
超级新手
Rank: 2
等 级:论坛游民
帖 子:185
专家分:59
注 册:2006-2-9
收藏
得分:0 

1、太复杂了搞不清楚,&还有位与的作用,C++里面新引进了 引用作用,一般是标识地址用
2、LNode可以省,但你必须要有结构体变量,即LNode,*LinList;
你说去掉结构体名,然后在里面用LNode* next代替*next,请问:这样变成了: LNode LNode *next 这样能行吗?首先你类型名LNode没有定义 。

手中无书,说不好,你的数据结构forgot


快快来我的群:13485998
学学C,玩玩算法,搞搞加密,比比谁更菜?
ARM恨死你。
2006-02-11 16:22
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
数据结构书上的是伪代码而不是真正的C语言,你应该先把C语言的语法看明白,再去看数据结构.

when i want to ask anyone,i will ask myself first.
2006-02-11 16:26
刘半仙
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-2-11
收藏
得分:0 
to 2楼 :谢谢2楼兄台,想了想问题一应该是C++中的问题,因为这本书都是通过C++编译成功的,我再查一下资料然后再问
问题二不是改成你说的LNode LNode *next 而是LNode *next ,因为在typedef已经说明了~~

to 3楼:也谢谢三楼的指教,不过我知道数据结构书上的东西不可以直接运行,但是我写的这些都是可以直接用的,我在华中科技大学出版社出的"数据结构实践指导教程(C语言版)"看见了人家写的源代码,人家就是这么用的~~

[此贴子已经被作者于2006-2-11 17:20:54编辑过]


2006-02-11 17:09
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
&是取地址符,也就是说取得链表的地址.
如果你还不明白把整个源码发上来大家讨论

when i want to ask anyone,i will ask myself first.
2006-02-11 19:06
刘半仙
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-2-11
收藏
得分:0 

我查了,谢谢2楼的兄台,&在C++中函数列表中出现是引用标识符,主要弥补C中没有地址参数的不足!一般都用在函数列表中,但也可以出现在任何地方, 不过出现时必须明确标识出起引用了谁~~哈哈,开心中~

至于第二个问题,还在讨论中!请高手名查~


2006-02-12 13:20
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 
数据结构不懂喔...
还没看完c呢

冷静点............. 耐心点.............
2006-02-12 14:18
sneeze
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-2-24
收藏
得分:0 
通过在TC上面的测试来看

typedef struct LNode ----------这里的LNode是可以省略不写的,但是因为后面要用到struct LNode, 所以还是写好。
{
int data;
struct LNode *next; ----------但是这里必须定义写struct LNode。
}LNode,*LinList

2006-02-27 17:27
快速回复:C数据结构的一个小问题
数据加载中...
 
   



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

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