Код: Выделить всё
node* ngan(node* pHead, node* pTail, ssdon comparedon) {
node* ngan = pTail;
node* prev = NULL, *cur = pHead, *tail = ngan;
while (cur != ngan) {
if (comparedon(cur, ngan)) {
if (prev)
prev->next = cur->next;
node* temp = pHead->next;
cur->next = temp;
pHead->next = cur;
swapnode(cur, temp);
tail = cur;
cur = prev ? prev->next : temp;
}
else {
prev = cur;
cur = cur->next;
}
}
swapnode(tail, ngan);
return tail;
}
void quicksortdon(node** pHead, node* pTail, ssdon comparedon) {
if (!(*pHead) || (*pHead) == pTail)
return;
node* tail = *pHead;
while (tail->next != NULL) {
tail = tail->next;
}
node* newHead = ngan(*pHead, pTail,comparedon);
quicksortdon(pHead, newHead, comparedon);
quicksortdon(&(newHead->next), pTail, comparedon);
}
Код: Выделить всё
typedef bool (*ssdon)(const node*,const node*);
bool comparemasvdon(const node* a, const node* b) {
const sv& sv1 = a->data;
const sv& sv2 = b->data;
return sv1.maSV < sv2.maSV;
}
У меня возникла ошибка под названием «Ошибка сегментации в typedef».
Код: Выделить всё
typedef struct sinhvien {
string maSV;
string ho;
string ten;
string lop;
float diem;
} sv;
Подробнее здесь: https://stackoverflow.com/questions/784 ... oblem-in-c