Вместо использования strcpy
, почему бы просто не переместить указатели узла? Если это односвязный список, вам понадобится узел before
, предшествующий узлу temp
, поэтому, когда вы делаете temp = temp->next
, вы сначала делаете before = temp
. Вот как вы бы поступили с двусвязным узлом:
if (strcmp(/*...*/) > 0) {
ReviewNode *swap = temp->next;
temp->next = swap->next;
swap->prev = temp->prev;
swap->next = temp;
temp->prev = swap;
}
Таким образом, вам не нужно копировать строки, которые могут занимать гораздо больше времени, чем простое перемещение узлов. Хороший способ узнать, как перемещать эти ссылки, - это взять карандаш и лист бумаги и смоделировать отсортированный список. Это требует времени, но в конечном итоге вы многому у него учитесь!
Без гораздо большей информации трудно понять, с какими проблемами вы сталкиваетесь. Удачи!
Использование onunload
позволяет отображать только сообщения, но не прерывает навигацию (потому что слишком поздно). Тем не менее, вы можете использовать onbeforeunload
, и это прервет навигацию:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
Редактировать : Удалено Подтверждение ()
в операторе возврата, так как это вызвало окно подтверждения, как и ожидалось, но также показал второе подтверждение с результатом первого подтверждения.
Используйте при выгрузке .
Для jQuery, я думаю, это работает так:
$(window).unload(function() {
alert("Unloading");
return falseIfYouWantToButBeCareful();
});
В примере Аймана, возвращая false, вы предотвращаете закрытие окна / вкладки браузера.
window.onunload = function () {
alert('You are trying to leave.');
return false;
}