C语言,这句程序什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:37:58
最近在学数据结构,有几句话不明白:
typedef struct LNode{
ElemType Data;
struct LNode *next;
}LNode,*LinkList;

定义一函数:查找第i个元素
LinkList get(LinkList L, int i LinkList *pre) /*这里的LinkList *pre是什么意思*/
{
LinkList p,q;int j;
q=L; *pre=NULL; /*/*这里的*pre=NULL是什么意思*/
p=L->nest; j=1;
while(p&&j<i)
{ q=p;p=p->next;++j}
if (p)*pre=q; /*这里的(p)*pre=q是什么意思*/
return p;

}
LinkList L, LinkList *pre 这两个定义有什么区别啊?为什么一个带*,一个不带呢?

函数用p来保存,程序查找到的节点。用pre
来保存p节点的前一个节点。保存pre的作用
是辅助节点可能执行的删除操作,你应该知道
删除链表中节点的原理吧。不知道的话看看书
因为有可能p就是链表的头节点,所以应该将
pre初始化为NULL

1.LinkList *pre是说,pre是一个LNode型的指针
2.*pre=NULL,是把pre指针赋为NULL值,即为空指针。
3.不是(p)*pre=q,是如果p存在,则把q的地址传给pre指针
if(p)
*pre=q;

带*是指针,lz你还是好好看看指针那块吧

p.s.lz你的C还要好好看啊

1.LinkList *pre是说,pre是一个LNode型的指针
2.*pre=NULL,是把pre指针赋为NULL值,即为空指针。
3.不是(p)*pre=q,是如果p存在,则把q的地址传给pre指针
if(p)
*pre=q;

NULL是空的意思,即为0

nmcfggfy