Quicksort trên Danh sách liên kết đơn
void quick_sort(LIST &&l) { LIST l1;LIST l2; if(l.pHead==NULL) // rong return; else { khoitao(l1); khoitao(l2); NODE *x=l.pHead; l.pHead=x->pNext; while(l.pHead!=NULL) { NODE *p=l.pHead; l.pHead=p->pNext; p->pNext=NULL; if(p->data<=x->data) themdau2(l1,p); else themdau2(l2,p); } quick_sort(l1); quick_sort(l2); if(l1.pHead==NULL) l.pHead=x; else { l.pHead = l1.pHead; l1.pTail->pNext = x; } x->pNext = l2.pHead; if(l2.pHead==NULL) l.pTail = x; else { l.pTail = l2.pTail; } } }