链表找最值

一双链表非空,有head指针指出,结点结构为{llink, data, rlink},请设计一个将节点数据域data值最大的那个结点(最大值结点只有一个)移动到链表最前边的算法,要求不得申请新节点空间



void maxFirst(DLNode *head)
{
    DLNode *p = head->rlink, *q = p;
    int max = p->data;
    // 找最值:
    while(p != NULL)
    {
        if(max < p->data)
        {
            max = p->data;
            q = p;
        }
        p = p->rlink;
    }
    // ‘删除’:
    DLNode *l = q->llink, *r = q->rlink;
    l->rlink = r;
    if(r != NULL)
        r->llink = l;
    // 插入:
    q->llink = head;
    q->rlink = head->rlink;
    head->rlink = q;
    q->rlink-llink = q;
}


原文地址:https://www.cnblogs.com/dsbz/p/14426044.html