C++链表删除和删除返回功能

C++ linked lists Remove and RemoveBack function

本文关键字:删除 功能 返回 C++ 链表      更新时间:2023-10-16

我想知道如何创建一个带有 remove(int num( 和 removeback(int num(的链表? 使用与 prepend 中提供的相同格式?

#include "ll.h"
LL::LL()
{
head = NULL;
}
void LL::prepend(int num)
{
node* newNode = new node;
newNode->val = val;
newNode->next = NULL;
if (head == NULL)
{
head = newNode;
}
else
{
newNode->next = head;
head = newNode;
newNode = NULL;
}
}
void LL::remove(int num)
{
}
void LL:removeBack (int num)
{

}

我认为删除和删除返回是相同的功能?正确?另外,我如何将该值传回

我假设 remove(int num( 删除与 num 具有相同值的第一个节点。我会把删除回来作为你的练习:)。

void LL:remove(int num) {
if (!head) {
return;
}
else if (head->val == num) {
node* temp = head;
head = head->next;
delete temp;
return;
}
node* second = head;
node* first = head->next;
// Iterate until we find the target, or reach the end
while (first && first->val != num) {
second = first;
first = first->next;
}
// At this point, first points to either nullptr or the target
if (first) {
second->next = first->next;
delete first;
}
}

搜索节点然后删除具有该值的节点怎么样?

void LL:remove (int num){
ListNode *nodePtr, *previousNode;
if (!head) {
return;
}
else if (head->value == num)
{
nodePtr = head->next;
delete head;
head = nodePtr;
}
else
{
nodePtr=head;
while (nodePtr != NULL && nodePtr->value !=num){
previousNode = nodePtr;
nodePtr = nodePtr->next;
}
previousNode->next = nodePtr->next;
delete nodePtr;
}

}