Итак, у меня проблема с домашним заданием, которая требует от меня вставить связанный список в другой связанный список в заданной позиции поз.
Когда pos == 0, все элементы «другого» списка будут помещены перед (оригинальными) элементами этого списка, если pos> = length (), (то есть если x больше длиныиз этого списка), тогда все элементы «другого» списка добавляются в этот список.После вставки все элементы в «другом» списке удаляются
, вот моя функция ниже
void LList::splice(Node* head, LList& other, int pos) {
if (head == nullptr) {
head = other.head;
other.head = nullptr;
return;
}
else if (pos > this->length()) {
if (head->next == nullptr) {
head->next = other.head;
other.head = nullptr;
}
splice(head->next, other, pos);
}
else if (pos == 1) {
Node* temp = head->next;
head->next = other.head;
while (other.head->next != nullptr) {
other.head = other.head->next;
}
other.head->next = temp;
other.head = nullptr;
return;
}
else {
splice(head->next, other, pos--);
}
}
, например: list = [11 22 66 77] и другие = [33 44 55]
list.splice(other, 2)
должен дать мне список = [11 22 33 44 55 66 77].Однако это все еще возвращает оригинал.Может ли кто-нибудь помочь мне с этим?
class LList {
public:
void splice(LList& other, int pos);
private:
struct Node {
int item;
Node* next;
};
void splice(Node* head, LList& other, int pos);
Node* head;
}