Мой учитель покинул эту задачу: < /p>
Обратите порядок элементов связанного списка, только путем манипулирования указателями в каждом узле. Не разрешено перемещать элемент как таковой, а не создавать новый узел для этой операции. Списка и «Последний» является последним указателем списка.template
Node* LinkedList::getNode(unsigned int i)
{
int index = 0;
if (i == 0)
return first;
Node* cursor = first;
while (index != i && cursor)
{
cursor = cursor->getNext();
++index;
}
return cursor;
}
< /code>
и вот мой метод для обратного списка: < /p>
template
void LinkedList::reverse()
{
int i = 1, j = 2;
while(j setNext(getNode(size - j++));
if (j == size + 1)
first = getNode(size - (j - 2));
else
getNode(size - j)->setNext(getNode(size - i++));
getNode(size - 1)->setNext(nullptr);
}
last = getNode(size - 1);
}
< /code>
Как я уже говорил, мне нужно было знать, есть ли у меня способ сделать то же самое без использования этого метода (который создает указатель узла). Я думаю, что когда он ссылается на создание нового узла, он говорит о указателе узла, потому что вы не можете создать узел (объект, а не указатель) и назначить ему указатель списка. Спасибо людям, которые ответили.
Подробнее здесь: https://stackoverflow.com/questions/391 ... de-pointer
Обратный список связанного списка в C ++ с использованием только указателя узла ⇐ C++
Программы на C++. Форум разработчиков
1755270458
Anonymous
Мой учитель покинул эту задачу: < /p>
Обратите порядок элементов связанного списка, только путем манипулирования указателями в каждом узле. Не разрешено перемещать элемент как таковой, а не создавать новый узел для этой операции. Списка и «Последний» является последним указателем списка.template
Node* LinkedList::getNode(unsigned int i)
{
int index = 0;
if (i == 0)
return first;
Node* cursor = first;
while (index != i && cursor)
{
cursor = cursor->getNext();
++index;
}
return cursor;
}
< /code>
и вот мой метод для обратного списка: < /p>
template
void LinkedList::reverse()
{
int i = 1, j = 2;
while(j setNext(getNode(size - j++));
if (j == size + 1)
first = getNode(size - (j - 2));
else
getNode(size - j)->setNext(getNode(size - i++));
getNode(size - 1)->setNext(nullptr);
}
last = getNode(size - 1);
}
< /code>
Как я уже говорил, мне нужно было знать, есть ли у меня способ сделать то же самое без использования этого метода (который создает указатель узла). Я думаю, что когда он ссылается на создание нового узла, он говорит о указателе узла, потому что вы не можете создать узел (объект, а не указатель) и назначить ему указатель списка. Спасибо людям, которые ответили.
Подробнее здесь: [url]https://stackoverflow.com/questions/39188151/reverse-linked-list-in-c-using-only-node-pointer[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия