风骚的小胖子。 发表于 2018-10-8 18:18:36

单链表问题

很懵

风骚的小胖子。 发表于 2018-10-8 18:19:38

程序图

claws0n 发表于 2018-10-8 18:40:26

风骚的小胖子。 发表于 2018-10-8 18:19
程序图

struct Book *ptr = NULL;
-----> -----> ...... -----> -----> [ NULL ]
      Head 是第一个节点,就是指针 ptr
不是
----->
很多数据结构的书都是把链表写成你给的方式,但是可以说实际的状况是这样。因为你定义的函数是 void,所以用二级指针才能对头指针进行修改。如果你是 struct Book addBook(struct Book *ptr),结构体型的函数,就是一级指针而已。类型不一样,调用的方式也不一样,但是都是对第一个节点操作,以后也许会遇到~

风骚的小胖子。 发表于 2018-10-8 18:56:04

本帖最后由 风骚的小胖子。 于 2018-10-8 18:58 编辑

claws0n 发表于 2018-10-8 18:40
struct Book *ptr = NULL;
-----> -----> ...... ----->

那如何调取第一个节点的指针域指向NULL?
ptr->next=NULL?
但是这种方法是结构指针指向结构体变量后才能用啊。

claws0n 发表于 2018-10-8 19:20:07

风骚的小胖子。 发表于 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 ]

风骚的小胖子。 发表于 2018-10-8 21:08:11

claws0n 发表于 2018-10-8 19:20
不需要。一开始是空链表,本身就指向 NULL,你调用函数的时候就会添加一个元素,然后就解决了。
Head...

struct Book *ptr = NULL
能把这句话给我深度剖析下吗

claws0n 发表于 2018-10-8 21:24:01

风骚的小胖子。 发表于 2018-10-8 21:08
struct Book *ptr = NULL
能把这句话给我深度剖析下吗

int a = 5; int *p = &a; //一般上是这样的
*p = 5; //可以对指针进行解引用
int *p2 = NULL; //不管参考什么类型,指针都可以指向 NULL。这样的指针叫空指针,避免野指针。
*p2; //空指针不能被解引用,会报错。空指针是一种保护措施。如果这个指针暂时没有用到,就让它成为空指针。
野指针……以后再谈,与内存泄漏有关
页: [1]
查看完整版本: 单链表问题