Книга, которую я читаю, Introduction to Data Structures with Linked Lists (Presentation 21), имеет 2 примера связанных списков. Вот первый один:Я не понимаю, почему эта функция «возвращает указатель из списка»
EnemySpaceShip* getNewEnemy()
{
EnemySpaceShip* p_ship = new EnemySpaceShip;
p_ship->x_coordinate = 0;
p_ship->y_coordinate = 0;
p_ship->weapon_power = 20;
p_ship->p_next_enemy = p_enemies;
p_enemies = p_ship;
return p_ship;
}
Второй пример связанных списков это одна:
EnemySpaceShip* addNewEnemyToList (EnemySpaceShip* p_list)
{
EnemySpaceShip* p_ship = new EnemySpaceShip;
p_ship->x_coordinate = 0;
p_ship->y_coordinate = 0;
p_ship->weapon_power = 20;
p_ship->p_next_enemy = p_list;
return p_ship;
}
Тогда книга пишет об этом:
Обратите внимание, что эта функция отличается от
getNewEnemy
, потому что он возвращает указатель на список, а не новый враг.
То, что я не понимаю, означает, что он означает, что «вторая функция возвращает указатель на список» и «первая функция возвращает нового врага». Я думал, что они оба создали нового врага под названием p_ship
(который является как указателем, так и новым врагом) и вернул его. Что подразумевается под этим заявлением?
На самом деле можно сказать, что обе функции возвращают вновь созданного врага или что обе функции возвращают список, поскольку обе функции имеют код для поддержания связанного списка. Единственное отличие - это источник главы списка. Реализация списка объединена с сущностью, поэтому ошибочно назвать результат любой функции чистым списком или «врагом». – Serge
Это похоже на ошибку. Так как это также очень плохой пример, показывающий все методы _worst_, которые вы можете использовать в C++, я бы, вероятно, рекомендовал искать более современную книгу на C++. –
@JanHudec, к сожалению, существует более худший опыт, чем показано в этом примере;) – user463035818