单链表问题
很懵 程序图 风骚的小胖子。 发表于 2018-10-8 18:19程序图
struct Book *ptr = NULL;
-----> -----> ...... -----> -----> [ NULL ]
Head 是第一个节点,就是指针 ptr
不是
----->
很多数据结构的书都是把链表写成你给的方式,但是可以说实际的状况是这样。因为你定义的函数是 void,所以用二级指针才能对头指针进行修改。如果你是 struct Book addBook(struct Book *ptr),结构体型的函数,就是一级指针而已。类型不一样,调用的方式也不一样,但是都是对第一个节点操作,以后也许会遇到~ 本帖最后由 风骚的小胖子。 于 2018-10-8 18:58 编辑
claws0n 发表于 2018-10-8 18:40
struct Book *ptr = NULL;
-----> -----> ...... ----->
那如何调取第一个节点的指针域指向NULL?
ptr->next=NULL?
但是这种方法是结构指针指向结构体变量后才能用啊。
风骚的小胖子。 发表于 2018-10-8 18:56
那如何调取第一个节点的指针域指向NULL?
ptr->next=NULL?
但是这种方法是结构指针指向结构体变量后 ...
不需要。一开始是空链表,本身就指向 NULL,你调用函数的时候就会添加一个元素,然后就解决了。
Head // struct Book *ptr = NULL;
[ NULL ]
p = ...malloc...
*ptr = p;
p->next = NULL;
head = p
[ data | next] -----> [ NULL ] claws0n 发表于 2018-10-8 19:20
不需要。一开始是空链表,本身就指向 NULL,你调用函数的时候就会添加一个元素,然后就解决了。
Head...
struct Book *ptr = NULL
能把这句话给我深度剖析下吗
风骚的小胖子。 发表于 2018-10-8 21:08
struct Book *ptr = NULL
能把这句话给我深度剖析下吗
int a = 5; int *p = &a; //一般上是这样的
*p = 5; //可以对指针进行解引用
int *p2 = NULL; //不管参考什么类型,指针都可以指向 NULL。这样的指针叫空指针,避免野指针。
*p2; //空指针不能被解引用,会报错。空指针是一种保护措施。如果这个指针暂时没有用到,就让它成为空指针。
野指针……以后再谈,与内存泄漏有关
页:
[1]