c语言王道日常

//王道 P38 2
void Del_x_4(LinkList &L,ElemType x){
    LNode *p=L->next,*pre=L,*q;
    //遍历链表
    while(p!=NULL){
        //找到数值相同节点,删除
        if(p->data==x){
            q=p;
            p=p->next;
            pre->next=p;
            free(q);
        }else{
            pre=p;
            p=p->next;
        }
    }
}
//王道 P38 3
void R_Print(LinkList &L){
    //先找到最后的元素
    if(L->next!=NULL){
        R_Print(L->next);
    }
    //反向输出
    if(L!=NULL){
        printf("%d\t",L->data);
    }
}
void R_Ignorance_Head(LinkList &L){
    if(L!=NULL){
        R_Print(L->next);
    }
}
//王道P38 3
LinkList Del_min_x(LinkList &L){
    //定义四个变量分别指向不同的位置
    LNode *pre=L,*p=pre->next;
    LNode *minpre=pre,*minp=p;
    //遍历链表
    while(p!=NULL){
        if(p->data<minp->data){
            minp=p;
            minpre=pre;
        }
        //后面继续遍历
        pre=p;
        p=p->next;
    }
    //删除最小元素
    minpre->next=minp->next;
    free(minp);
    return L;
}
//王道 P38 5(反转链表)
LinkList Reverse_L(LinkList &L){
    //定义指针
    LNode *p,*r;
    //断链并存储地址
    p=L->next;
    L->next=NULL;
    while(p!=NULL){
        //保存下一个地址
        r=p->next;
        //头插
        p->next=L->next;
        L->next=p;
        //将p重新指向r
        p=r;
    }
}
//王道 p38 6
LinkList Sort(LinkList &L){
    LNode *p,*r,*pre;
    //断链
    p=L->next;
    r=p->next;
    p->next=NULL;
    p=r;
    //遍历
    while(p!=NULL){
        //保存节点
        r=p->next;
        pre=L;
        while(pre->next!=NULL && pre->next->data<p->data){
            pre=pre->next;
        }
        //找到位置插入位置
        p->next=pre->next;
        pre->next=p;
        p=r;
    }
    return L;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值