Вставить весь связанный список в другой в данной позиции - PullRequest
0 голосов
/ 27 сентября 2019

Итак, у меня проблема с домашним заданием, которая требует от меня вставить связанный список в другой связанный список в заданной позиции поз.

Когда 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...