麻麦皮 发表于 2020-5-25 20:06:07

静态链表函数参数L为什么没有*

本帖最后由 麻麦皮 于 2020-5-25 20:59 编辑


typedef struct
{
        ElemType data;
        int cur;
} StaticLinkList;
Status ListInsert(StaticLinkList L, int i, ElemType e)
{
       
}

永恒的蓝色梦想 发表于 2020-5-25 20:13:42

为什么要有*,我猜这应该是个节点吧?

KevinHu 发表于 2020-5-25 20:41:28

把StaticLinkList的定义过程发过来

麻麦皮 发表于 2020-5-25 20:59:59

KevinHu 发表于 2020-5-25 20:41
把StaticLinkList的定义过程发过来

已发

麻麦皮 发表于 2020-5-25 21:01:07

永恒的蓝色梦想 发表于 2020-5-25 20:13
为什么要有*,我猜这应该是个节点吧?

顺序表和单链表的插入删除都有函数参数都包含*L,静态链表没有?

KevinHu 发表于 2020-5-25 21:01:54

麻麦皮 发表于 2020-5-25 20:59
已发

StaticLinkList定义的是一个数组,而数组名也就是指针,所以StaticLinkList本来声明的就是一个指针,就不用再加*了

麻麦皮 发表于 2020-5-25 21:14:02

KevinHu 发表于 2020-5-25 21:01
StaticLinkList定义的是一个数组,而数组名也就是指针,所以StaticLinkList本来声明的就是一个指针,就不 ...

这就引申单链表的问题了,定义了*LinkList,单链表插入和删除函数参数包含了LinkList *L,这是二重指针,为什么不用一重指针?

KevinHu 发表于 2020-5-25 21:15:26

麻麦皮 发表于 2020-5-25 21:14
这就引申单链表的问题了,定义了*LinkList,单链表插入和删除函数参数包含了LinkList *L,这是二重指针, ...

因为你要改变这个指针本身(如:创建单链表的时候要对指针重新赋值一个新的地址,删除单链表的时候要把指针重设为NULL),就要传进二重指针

麻麦皮 发表于 2020-5-25 21:24:12

KevinHu 发表于 2020-5-25 21:15
因为你要改变这个指针本身(如:创建单链表的时候要对指针重新赋值一个新的地址,删除单链表的时候要把指 ...

单链表不可以定义LinkList,传LinkList *L吗?

KevinHu 发表于 2020-5-25 21:25:08

麻麦皮 发表于 2020-5-25 21:24
单链表不可以定义LinkList,传LinkList *L吗?

可以

KevinHu 发表于 2020-5-25 21:28:17

麻麦皮 发表于 2020-5-25 21:24
单链表不可以定义LinkList,传LinkList *L吗?

求最佳{:10_254:}

麻麦皮 发表于 2020-5-25 21:30:38

KevinHu 发表于 2020-5-25 21:25
可以

那我挺疑惑的,有时定义LinkList传LinkList *L,有时定义*LinkList传LinkList *L,为什么经常看见后面的写法较多,不应该越简单越好吗

KevinHu 发表于 2020-5-25 21:31:17

麻麦皮 发表于 2020-5-25 21:30
那我挺疑惑的,有时定义LinkList传LinkList *L,有时定义*LinkList传LinkList *L,为什么经常看见后面的 ...

有时候为了修改指针的地址,要传双重指针,看实际情况了
页: [1]
查看完整版本: 静态链表函数参数L为什么没有*