mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:27:36 +00:00
AK: Add insert_{before,after}(iterator, value) to SinglyLinkedList
This commit is contained in:
parent
abdd5aa08a
commit
13cf7e76b9
1 changed files with 52 additions and 0 deletions
|
@ -194,6 +194,58 @@ public:
|
||||||
delete iterator.m_node;
|
delete iterator.m_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void insert_before(Iterator iterator, const T& value)
|
||||||
|
{
|
||||||
|
auto* node = new Node(value);
|
||||||
|
node->next = iterator.m_node;
|
||||||
|
if (m_head == iterator.m_node)
|
||||||
|
m_head = node;
|
||||||
|
if (iterator.m_prev)
|
||||||
|
iterator.m_prev->next = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insert_before(Iterator iterator, T&& value)
|
||||||
|
{
|
||||||
|
auto* node = new Node(move(value));
|
||||||
|
node->next = iterator.m_node;
|
||||||
|
if (m_head == iterator.m_node)
|
||||||
|
m_head = node;
|
||||||
|
if (iterator.m_prev)
|
||||||
|
iterator.m_prev->next = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insert_after(Iterator iterator, const T& value)
|
||||||
|
{
|
||||||
|
if (iterator.is_end()) {
|
||||||
|
append(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto* node = new Node(value);
|
||||||
|
node->next = iterator.m_node->next;
|
||||||
|
|
||||||
|
iterator.m_node->next = node;
|
||||||
|
|
||||||
|
if (m_tail == iterator.m_node)
|
||||||
|
m_tail = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insert_after(Iterator iterator, T&& value)
|
||||||
|
{
|
||||||
|
if (iterator.is_end()) {
|
||||||
|
append(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto* node = new Node(move(value));
|
||||||
|
node->next = iterator.m_node->next;
|
||||||
|
|
||||||
|
iterator.m_node->next = node;
|
||||||
|
|
||||||
|
if (m_tail == iterator.m_node)
|
||||||
|
m_tail = node;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Node* head() { return m_head; }
|
Node* head() { return m_head; }
|
||||||
const Node* head() const { return m_head; }
|
const Node* head() const { return m_head; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue