История изменений
Исправление alysnix, (текущая версия) :
Компилятор из двойной косвенности всегда (или хотя бы чаще) сгенерирует код хуже, чем для двух указателей туда же?
у вас формальный селектор доступа(curr) к текущему элементу есть адрес поля next предыдущего елемента. тогда чтобы прочитать key текущего элемента надо написать
(*curr)->key ///два чтения памяти
а в каноническом алгоритме «селектор доступа» это просто адрес текущего и то же самое пишется как
curr->key ///одно чтение
но в каноническом алгоритме адрес prev хранится явно, а у вас он сам curr фактически.
итак. ваш curr и есть prev канонического алгоритма, вы просто берете адрес текущего разыменованием curr.
короче это канонический алгоритм, где лишь изменены селекторы доступа к текущему и предыдущему. предыдущий есть по любому, просто он лихо переназван как «текущий», что не является корректным.
Исходная версия alysnix, :
Компилятор из двойной косвенности всегда (или хотя бы чаще) сгенерирует код хуже, чем для двух указателей туда же?
у вас формальный селектор доступа(curr) к текущему элементу есть адрес поля next предыдущего елемента. тогда чтобы прочитать key текущего элемента надо написать
(*curr)->key ///два чтения памяти
а в каноническом алгоритме «селектор доступа» это просто адрес текущего и то же самое пишется как
curr->key ///одно чтение
но в каноническом алгоритме адрес prev хранится явно, а у вас он сам curr фактически.
итак. ваш curr и есть prev канонического алгоритма, вы просто берете адрес текущего разыменованием curr.
короче это канонический алгоритм, где просто изменены селекторы доступа к текущему и предыдущему. предыдущий есть по любому, просто он лихо переназван как «текущий», что не является корректным.