永发信息网

在定义结点时写*LinkList,在创建链表时只用写LinkList,这是为什么?

答案:3  悬赏:30  手机版
解决时间 2021-01-24 17:12
  • 提问者网友:捧腹剧
  • 2021-01-24 13:36
定义节点如下:
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList; //线性链表类型
创建链表时用以下函数,内容省略。
Status CreateList_L(LinkList *L,int n);
mian函数内容:
LNode *L1;
CreateList_L(&L1,5);

我的问题就是在使用CreateList_L函数创建链表时,它的参数是LInkList *类型的,
为什么不是*LinkList *类型的。
我认为typedef的时候是将整个结点结构体重命名为*LinkList
在使用这种结构体类型的时候却不用在LinkList前加*号,这是怎么回事?
最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-01-24 14:03
楼上那位兄弟完全误解了LinList *L的意思啦
Status CreateList_L(LinkList *L,int n);
因为LinkList <=> LNode *,转换一下就明白了,LNode **L,这说明L是一个指向指针的指针。例如:int *p=4;**q; q=&p;其中指针p指向存储4的地址,由于指针也是变量,在内存中也是有存储地址的,指针q则指向指针变量p的存储地址。而是用结构体时是直接是用头指针,所以不需要加*号,这样你应该能明白了吧。
全部回答
  • 1楼网友:人類模型
  • 2021-01-24 15:16
这个定义你这么看 typedef (struct LNode *) LinkList; 意思就是 LinkList 本身就是一个指向struct LNode 指针 比方说你定义了一个char * p;它是(char *) p,p是指向char 的指针,你之后用P的时候不会再在它的前面加一个* 吧?
  • 2楼网友:野味小生
  • 2021-01-24 15:05
struct 是值类型,class是引用类型。这个地方用得不对 “ public clslink next;”你写的这这句话是引用类型,值类型中不能用到引用类型,而引用类型中可以用到值类型。 c#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。 c#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯