刚学了C语言的数据结构,有一些问题不懂,或者说有一些认识不知道对不对,想知道真正的情况是怎么样的。
先看这几条语句:
void union(List *La,List Lb) (1)
{
int La_len,Lb_len,i;
ElemType e;
La_len = ListLength(*La); (2)
Lb_len = ListLength(Lb); (3)
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb,i,&e);
if(!LocateElem(*La,e)) (4)
ListInsert(La,++La_len,e);
}
}
再看函数原型,是我看的书上的:(L是线性表)
1. InitList(*L);
2. ClearList(*L);
3. ListInsert(*L,i,e);
4. ListDelete(*L,i,*e);
5. ListLength(L);
6. ListEmpty(L);
7. LocateElem(L,e);
8. GetElem(L,i,*e);
问题是: 1. 第一部分语句, union函数的两个参数List *La,List Lb,一个是*La,一个是Lb, 不知道为什么一个是用线性表的指针的地址 *L,一个是用 L 。
2. La_len = ListLength(*La); (2)
Lb_len = ListLength(Lb); (3)
!LocateElem(*La,e) (4) 和第7条原型LocateElem(L,e);
(2)(3)两条语句,用的是同样的函数,一个却是指针地址,一个确实指针指向的值,对应第5条函数原型ListLength(L);是不是这个函数里面的参数既可以是*La也可以是Lb?区别是什么?
(4)的语句第一个参数是*La,而原型第一个参数是L,不知道为什么一个有加*,一个没有加,有错吗,没错的话区别是什么?
3. 几个函数原型里面,前4条函数的参数是L,后4条函数参数是(*L),还有e也有这种情况,是为什么??搞不懂什么时候用加*,什么时候不用加,区别是什么
4. 顺序线性表的定义跟一个结构体差不多,里面有一个数组存储数据元素,搞不清楚结构体和线性表和数组的区别和联系
(老师教C的时候,没怎么听,后来学JAVA了C也忘记差不多了,学C的数据结构感觉熟悉又陌生,有很多不懂的地方,谢谢大家帮忙解答了)