首先先给大家看一段数据结构书上的程序(清华出的数据结构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!
问题很简单,不过不清楚真的很闹心,请哪位大侠点播一下,小弟先在这儿谢过~~罐水的请到别地儿看看~
C数据结构的一个小问题