C++ 用于删除链接列表节点的伪代码

C++ 用于删除链接列表节点的伪代码,c++,linked-list,singly-linked-list,C++,Linked List,Singly Linked List,假设p是指向链表中某个节点的指针,*p不是尾部节点。在*p之后删除节点的步骤是什么?每一步用一个简短的英语句子 我的想法是: 1) 创建一个class node类型的临时变量,并在临时变量旁边指定p->,称此变量为temp 2) 将temp的下一个指针指定给p的下一个指针 3) 将*p之后节点的下一个指针设置为NULL 这使得*p之后的节点不存在于链表中,但它仍然占用内存吗?或者因为在步骤3中我将指针设置为NULL,所以我移除的节点现在没有更多内存了?我需要使用free()还是delete函数?

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

我的想法是: 1) 创建一个class node类型的临时变量,并在临时变量旁边指定p->,称此变量为temp

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

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


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

您似乎试图描述删除单个链接列表中的节点

描述中正确的是,您需要一个临时变量,该变量将指向已删除的节点

因此,步骤如下所示

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++中,代码将以下面的方式< /P>
1) Node *temp = p->next;
2) p->next = temp->next;
3) delete temp;

画一张图,它肯定会有帮助。是的,它占用内存,除了更新一些指针值之外,你什么都没做。“已删除”节点仍然存在,并且您的temp变量指向它。@jxh如果链表有3个节点,假设它有数据1、2和3,*p是头指针,那么当删除*p之后的节点时(以2作为数据的节点),链表应该看起来像1、3。谢谢!free()函数也可以代替delete吗?@user3874530这取决于节点的分配方式。在C++中使用了新的和删除的运算符。在C语言中,使用了malloc()和free()函数