-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_list_node.cpp
More file actions
48 lines (40 loc) · 1.2 KB
/
Copy pathdelete_list_node.cpp
File metadata and controls
48 lines (40 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "delete_list_node.h"
void DeleteListNode::DeleteNodeFromList(std::shared_ptr<LinkedList::Node<int>>& node_to_delete)
{
node_to_delete->data = node_to_delete->next->data;
node_to_delete->next = node_to_delete->next->next;
}
auto DeleteListNode::DeleteNodeKthLast(std::shared_ptr<LinkedList::Node<int>>& list, int k)
-> std::shared_ptr<LinkedList::Node<int>>
{
const auto dummy_head = std::make_shared<LinkedList::Node<int>>(LinkedList::Node<int>{0, list});
auto precede = dummy_head->next;
while (k--)
{
precede = precede->next;
}
auto follow = dummy_head;
while (precede)
{
precede = precede->next;
follow = follow->next;
}
follow->next = follow->next->next;
return dummy_head->next;
}
auto DeleteListNode::DeleteDuplicateNode(std::shared_ptr<LinkedList::Node<int>>& list)
-> std::shared_ptr<LinkedList::Node<int>>
{
auto iter = list;
while (iter)
{
auto next_distinct = iter->next;
while (next_distinct && next_distinct->data == iter->data)
{
next_distinct = next_distinct->next;
}
iter->next = next_distinct;
iter = next_distinct;
}
return list;
}