selectionSort() 

Posi(T) head = p->pred;
Posi(T) tail = p;
for (int i = 0; i < n; i++)
    tail = tail->succ;//对列表中起始于位置p的连续n个元素做选择排序。
while (1 < n) {
    insertBefore( tail, remove( selectMax (head->succ, n)));
    tail = tail->pred;
    n--;
}

 selectMax()

Posi(T) max = p;
for (Posi(T) cur =p; 1 < n; n--)
    if ( !lt(( cur = cur->succ )->data, max->data))
        max = cur;
    return max;