Chào các bác, em đang sắp xếp 1 danh sách đã cho thành danh sách mới có phần tử chẵn nằm đầu danh sách và lẻ nằm ở cuối, nhưng mà em đã sắp xếp được chẵn ở đầu rồi, nhưng thứ tự phần lẻ phía sau lại sai. Các bác giúp em với.
void segregateEvenOdd(SinglyLinkedList* head_ref)
{
// TODO
SinglyLinkedListNode* p = head_ref->head;
for (p; p != head_ref->tail; p = p->next) {
for (SinglyLinkedListNode* k = p->next; k != NULL; k = k->next) {
if (p->data % 2 != 0 && k->data % 2 == 0) {
int temp;
temp = p->data;
p->data = k->data;
k->data = temp;
}
}
}
}
Vd: 8 >> 5 >> 4 >> 3 >> 1 >> 2 >> 6
Output: 8 >> 4 >> 2 >> 6 >> 5 >> 3 >> 1
Nhưng mà em lại ra là 8 >> 4 >> 2 >> 6 >> 1 >> 5 >> 3