用于删除链表节点的伪代码

时间:2015-04-06 19:48:59

标签: c++ linked-list singly-linked-list

假设p是指向链表中节点的指针,而* p不是尾节点。在* p之后删除节点的步骤是什么?每一步都要用一个简短的英文句子。

我的想法是: 1)创建类节点类型的临时变量,并在临时变量旁边分配p-> - 调用此变量temp。

2)将temp的下一个指针指定给p的下一个指针。

3)将* p之后的节点的下一个指针设置为NULL。

这使得* p之后的节点不存在于链表中,但它是否还占用了内存?或者,因为在步骤3中我将指针设置为NULL,我现在删除的节点没有更多的内存?我需要使用free()或delete函数吗?

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试描述删除单链接列表中的节点。

您的描述中的正确之处在于您需要一个指向已删除节点的临时变量。

因此,步骤如下:

1) define a temporary pointer to Node and assign the value in p->next to the temporary pointer.
2) assign the value in data member next of the temporary pointer to the data member next of p.
3) delete node pointed to by the temporary pointer.

在C ++中,代码将按以下方式显示

1) Node *temp = p->next;
2) p->next = temp->next;
3) delete temp;