gpt4 book ai didi

c - Loudon算法书单向链表的实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:20 25 4
gpt4 key购买 nike

我正在阅读 Kyle Loudon 的Mastering Algorithms with C,目前我正在努力学习 Loudon 在第 5 章中实现的单链表。

这里是源代码的链接。很抱歉没有将它们张贴在这里,因为它们有点长。

list.h

list.c

我的问题与 list.c 中的 destroy 有关,因为它在

下的 11 行中提到

void list_init(List* list, void (*destroy)(void* data))

作为 list->destroy = destroy

然后再次在 24 行中作为

list->destroy(data).

我只知道这个 destroy 与函数 list_destroy 不同,但我不知道它是什么。它是一个函数还是只是一个指针?它在 list_init() 函数中用于初始化链表的目的是什么?

非常感谢您的宝贵时间和帮助!源代码链接在上面。

最佳答案

它是一个函数指针。当您创建此列表的实例时,您还必须将一个函数交给 init_list 函数,它将用于销毁信息。

链表的目的是存储信息,链表结构是为了给一些结构这个数据。因此,列表中的每个元素都包含一个指向某些数据的指针,以及一个指向列表中下一个元素的指针。但是,您希望列表能够处理多种数据。

假设你想删除列表中的一个元素,那么基本上有两件事必须发生:

  1. 数据需要销毁

  2. 必须恢复链表结构。这意味着您删除的元素的前身必须指向列表中的下一个元素。

由于您事先不知道列表中的数据指针将包含什么样的数据,因此在步骤 1 中提供了一个函数指针来处理该数据的销毁。

关于c - Loudon算法书单向链表的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39336407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com