Я пытаюсь написать функцию «add», которая принимает значение, хранящееся в узле (обозначается как «n»), и позицию, в которой узел должен быть добавлен в связанный список (обозначается как «pos»).
Я видел код, в котором есть 3 отдельные функции добавления - addAtBeginning, addAtMiddle, addAtEnd, но я хочу одну функцию добавления, которая выполняет все эти функции.
Я написал код для надстройки (int n, int pos), но он не дает ожидаемого результата.
Например, в моем главном у меня есть:
LinkedList num;
num.add(5,1);
num.add(6,2);
num.add(7,2);
num.printList();
И я ожидаю выхода: 5 7 6, (так как 7 сместится во вторую позицию, а 6затем переместится в третью позицию), за исключением того, что я получаю вывод: 5 6 7, где 7 добавляется в 3-ю позицию.
Кроме того, я уже написал свой класс Node и класс LinkedList. Я тестировал свои функции в этих классах с небольшими приращениями, и все остальное вроде бы нормально, кроме моей функции добавления.
Node * newNode = new Node();
newNode->setValue(n); //Node gets value n
int i=1; //ie. first position is 1, not 0
Node * current = head;
if (current == nullptr) //ie. then new node IS the head
{
head = newNode;
head->next=nullptr;
return;
}
if (current->next==nullptr) //adding to end of list
{
current->next = newNode;
newNode->next = nullptr;
}
else //if inserting Node at middle, (neither at beginning or end)
{
while ( i<pos && current->next != nullptr) //traverse thru list
{
current=current->next;
i = i+1;
}
Node * oldNext = current->next;
current -> next = newNode;
newNode -> next = oldNext;
}
При компиляции сообщений об ошибках нет.