Кресты / Говнокод #27001 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
Node* reverse(Node* head) 
{
	Node *end = head, *current = head;
	while (end->next != nullptr) {
		end = end->next;
	}
	
	Node *initial_end = end, *temp = nullptr, *temp_2 = nullptr;
	
	end->next = current;
	temp = current;
	current = current->next;
	temp->next = nullptr;
	
	while (current != initial_end) {
		
		temp_2 = initial_end->next;
		initial_end->next = current;
		temp = current;
		current = current->next;
		temp->next = temp_2;
	}
	
	return initial_end;
}

Я где-то прочитал, что на собесе нужно написать переворот односвязного списка за 5 минут... Спустя 2 дня получилось это.

Запостил: oaoaoammm oaoaoammm, (Updated )

Комментарии (8) RSS

  • Теперь смотрим, как это делается на "PHP":
    $list=array_reverse($list);
    Ответить
  • > за 5 минут

    Хм, за 5 минут независимо от длины списка? Во валят!
    Ответить
  • Эм, а этот код вообще что-то меняет в списке? Блин, внатуре переворачивает.
    Ответить
    • Я за два дня написал, что оно мне передрачивало список (собирало его циклично, добавляя первый элемент в конец)

      А потом за часок сидения с бумажкой и ручкой до меня это дошло, и я переписал как переписал.
      Ответить
  • Поучаствую в специальной олимпиаде:
    Node *p = nullptr;
    while (head) {
        Node *tmp = head;
        head = head->next;
        tmp->next = p;
        p = tmp;
    }
    
    return p;
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8