将所有的在线性表Lb中但不在La中的元素插入La中

书中代码:
void union(List *La,List Lb)
{
int La_len,Lb,_len,i;
ElemType e;
La_len=ListLenth(La);
Lb_len=ListLenth(Lb);
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb,i,e);
if(!LocateElem(La,e,equal))
ListInsert(La,++La_len,e);
}
}
List是类型名吗?
为什么La是指针的形式,Lb却不是?

书中ListLenth函数的原型是ListLenth(L)
但本函数中调用的时候,传入的参数既有*La(指针),又有Lb(非指针),何解?

1个回答

看你List怎么定义的
如果 typedef struct
{
Node * next;
ElemType value;
} * List;
那么List就是指针,没毛病。

否则就不是指针。

如果List是指针,那么List * 就是指针的指针(如果list不是指针,那么list *是指针)。那么在函数里使用 List *la 的动机就是,这个函数需要修改la的指向,让它指向另一个List
并且结果作用到函数调用者上。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复whyyouhitme_: 如果是 typedef { ... } * List, List; 那么这么写可以,否则的确你说的,这么写很奇怪,估计写错了。
大约 2 年之前 回复
whyyouhitme_
whyyouhitme_ 那怎样理解以ListLenth(L)的原型(第5,6行),先后调用指针Lb,和指向指针的指针La?我的意思是,它的参数只能是同一种类型,不是吗?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问