妖娆乌龙茶 发表于 2023-11-30 09:59:08

单链表尾插法

if (*library != NULL)
      {
                tail->next = book;
                book->next = NULL;
      }
      else
      {
                *library = book;
                book->next = NULL;
      }
   
      tail = book;

这一段什么意思,为什么不能直接 tail->next = NULL

FishC_GPT 发表于 2023-11-30 09:59:20

这段代码是在实现单链表的尾插法插入节点。其中的逻辑是判断链表是否为空,如果不为空,则将新节点(book)链接到链表的尾部;如果链表为空,则将新节点作为链表的头节点(*library)。

tail->next = book 是将原链表的尾节点(tail)的next指针指向新节点(book),这样就将新节点插入到了链表的尾部。而 tail = book 是将尾节点指针更新为新节点,以便下一次插入操作时可以正确找到链表的尾部。

至于为什么不能直接 tail->next = NULL,是因为这样会断开原链表的连接,导致链表丢失。在尾插法中,我们需要保持链表的完整性,所以需要将新节点与原链表的尾节点进行连接。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 单链表尾插法