C编程-通过迭代方法反向链接链接

问题描述

我正在尝试通过迭代方法来反向链接。神奇的是,在观看了教程并尝试重新编写自己的代码之后,该程序成功运行了。但是,当我查看代码时,遇到一个问题:在第23行中,为什么我们必须使用temp1-> next而不是temp1?当遍历链表的末尾时,在哪种情况下我们使用条件(节点!= NULL)?在这种情况下,我们使用(节点的链接!= NULL)?如果有人能启发我,我将非常感谢。

sudo composer update drupal/core-recommended --with-dependencies

PHP Warning:  Module 'apcu' already loaded in UnkNown on line 0
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs,2 updates,0 removals
  - Updating drupal/core (9.0.3 => 9.0.7): Downloading (100%)         
  - Updating drupal/core-recommended (9.0.3 => 9.0.7)
Writing lock file
Generating autoload files
Hardening vendor directory with .htaccess and web.config files.
28 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Cleaning vendor directory.

解决方法

在这种情况下,在while条件中的第23行中,您可以注意到该程序正在使用temp1 = temp1->next,如果在到达链接列表的最后一个元素时将条件更改为temp1 != NULL它会从内存中收集垃圾,甚至会导致错误,因为NULL没有下一个位置。

因此,如果要访问列表中的数据,则使用temp1 != NULL,如果要操纵链接列表的下一个位置,则使用temp1->next != NULL

,

因为链接列表末尾的temp1->nextNULL,但是最后一个节点有数据,如果使用temp1 == NULL,您会说最后一个节点是{{1 }},情况并非如此。因此,您想在“指向下一个节点的指针”为NULL时结束循环,而不是在下一个节点为NULL时结束循环。