Ok, corrected insert, should have copied directly from my c implementation, all tests good, just need to test insert middle
This commit is contained in:
@@ -235,21 +235,20 @@ LinkedListErr LinkedList<T>::insert(size_t index, const T& value) {
|
|||||||
return this->append(value);
|
return this->append(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index >= this->size) {
|
if (index > this->size) {
|
||||||
return LinkedListErr::LINKEDLIST_OUT_OF_BOUNDS;
|
return LinkedListErr::LINKEDLIST_OUT_OF_BOUNDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If index is head
|
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
return this->prepend(value);
|
return this->prepend(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If index is tail
|
if (index == this->size) {
|
||||||
if (index == this->size - 1) {
|
|
||||||
return this->append(value);
|
return this->append(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Node<T>* current = this->head;
|
Node<T>* current = this->head;
|
||||||
|
|
||||||
for (size_t i = 1; i < index; i++) {
|
for (size_t i = 1; i < index; i++) {
|
||||||
current = current->next;
|
current = current->next;
|
||||||
}
|
}
|
||||||
@@ -263,9 +262,11 @@ LinkedListErr LinkedList<T>::insert(size_t index, const T& value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_node->data = value;
|
new_node->data = value;
|
||||||
new_node->next = current->next->next;
|
new_node->next = current->next;
|
||||||
current->next = new_node;
|
current->next = new_node;
|
||||||
|
|
||||||
|
this->size++;
|
||||||
|
|
||||||
return LinkedListErr::LINKEDLIST_OK;
|
return LinkedListErr::LINKEDLIST_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -279,3 +279,25 @@ TEST_CASE("Insert at start of list", "[linkedlist]") {
|
|||||||
REQUIRE(list.len() == 4);
|
REQUIRE(list.len() == 4);
|
||||||
REQUIRE(list.get(0) == 90);
|
REQUIRE(list.get(0) == 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Insert at end of list", "[linkedlist]") {
|
||||||
|
LinkedList<int> list = {};
|
||||||
|
|
||||||
|
REQUIRE(list.len() == 0);
|
||||||
|
|
||||||
|
list.append(8);
|
||||||
|
REQUIRE(list.len() == 1);
|
||||||
|
REQUIRE(list.get(0) == 8);
|
||||||
|
|
||||||
|
list.append(9);
|
||||||
|
REQUIRE(list.len() == 2);
|
||||||
|
REQUIRE(list.get(1) == 9);
|
||||||
|
|
||||||
|
list.append(10);
|
||||||
|
REQUIRE(list.len() == 3);
|
||||||
|
REQUIRE(list.get(2) == 10);
|
||||||
|
|
||||||
|
list.insert(2, 90);
|
||||||
|
REQUIRE(list.len() == 4);
|
||||||
|
REQUIRE(list.get(2) == 90);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user