Методы C ++ для вставки элемента в начале связанного списка и по указанному индексу

Для класса списка я пытаюсь создать метод для добавления узла в связанный список в начале списка, такой как void List::prepend(const Item& it) а также один, чтобы вставить элемент по определенному индексу в списке: void List::insert(const Item& it, int index)

Таким образом, я мог бы использовать некоторую помощь в начале каждого из них.

Я уже создал метод, который добавляет в конец списка:

void List::append(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
myFirst = nodePtr;
}
else
{
myLast->myNext = nodePtr;
}
myLast = nodePtr;
mySize++;
}

Но эти два других идут не так хорошо.

Если вам интересно, у меня есть здесь typedef:

typedef double Item;

0

Решение

void List::prepend(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
//..
}
else
{
//..
}
++mySize;
}

void List::insert(const Item& it, int index) {
Node *nodePtr = new Node(it, NULL);
if(index == 0)
{
//..
}
Node *currentNode = myFirst;
int currentIndex = 0;
while(currentIndex < index - 1) {
//..
}
// insert before
// ..
++mySize;
}

Заполните области // .. самостоятельно.

0

Другие решения

Кажется, это ваша функция (List :: append (const Item& это)) есть небольшая ошибка, что вы еще не обновили последний указатель на NULL.

0

проблема в том, что вы сохраняете только последний элемент.
Вы должны сохранить первый элемент в myFirst.

Answer these questions:
1. What happen if mySize = 1 ?
2. Where does nodePtr point next?  ( nodePtr->next)

На ваш вопрос:

void List::prepend(const Item& it) {
Node *nodePtr = new Node(it, NULL);
if(mySize == 0)
{
myFirst = nodePtr;
}
else{
nodePtr->next = myFirst;
myFirst = nodePtr;
}
mySize++;
}
0
По вопросам рекламы [email protected]