【问题标题】:Removing the head node of my linked list? C++删除我的链表的头节点? C++
【发布时间】:2015-05-08 13:14:53
【问题描述】:

我有这个有点非常规编码的链表,正在尝试删除它的头部。

这是一个哈希表,所以它是一个链表数组

myStruct *pointer = HashTable[i];

1->2->3->空

如何删除 1 并使 2 成为列表的头部? 我试过 pointer = pointer->next 但是当我重新显示表格时,它仍然打印 1->2->3->NULL,而不是 2->3->NULL。

【问题讨论】:

  • 我什至不太担心从内存中释放它,但更担心的是重新链接列表的头部。
  • 请提供更多代码并使用code标签提高可读性。
  • 我的水晶球说你将头指针按值传递给函数。并在该函数中更改了头指针的值,现在想知道为什么在该函数之外头仍然指向前一个头。
  • 为什么没有人使用<list>?从头开始正确地写这个很难,而且完全是浪费时间。
  • 我希望原因是功课。

标签: c++ linked-list


【解决方案1】:

我会推荐我为您制作的图片。我认为这比说类似的话更安全:

node *temp = head

head =head->next 

delete temp

因为根据您处理指针的方式,您可能会冒删除整个列表的风险。这样做,您将失去理智并确保您拥有列表的其余部分。但是做你喜欢的事!男人 - 尝试一下。

【讨论】:

  • 反应很好。图片 = 为我 +1。
【解决方案2】:
void changethehead(node*&head) {
    node *tobedeleted = head;
    head = head->next;   // head is the next element
    delete tobedeleted; // delete the old head
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2016-03-02
    相关资源
    最近更新 更多