zoukankan      html  css  js  c++  java
  • 链表的有序插入

    从小到大排序

    根据指针获取当前id,并设置前指针,方便操作:

    // test1107.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "stdio.h"
    #include "memory.h"
    #include <string.h>
    #include <stdlib.h>
    #include "string.h"
    
    typedef struct LINK{
        int id;
        LINK *next;
    }Link;
    
    typedef struct LL{
        Link *root;
        int num;
    }Ll;
    
    void insert(Ll *l,int num);
    
    int main(){
        Ll *ll = (Ll *)malloc(sizeof(Ll));
        ll->num = 0;
        ll->root = NULL;
        insert(ll,5);
        insert(ll,2);
        insert(ll,20);
        insert(ll,1);
        insert(ll,100);
        Link *link = (Link *)malloc(sizeof(Link));
        printf("%d",ll->root->id);
        link = ll->root->next;
        while(link != NULL){
            printf("->%d",link->id);
            link = link->next;
        }
        getchar();
        return 0;
    }
    
    void insert(Ll *l,int num){
        Link * linkp = (Link *)malloc(sizeof(Link));
        Link * current =  (Link *)malloc(sizeof(Link));
        Link * new_id = (Link *)malloc(sizeof(Link));
        current = l->root;
        linkp = l->root;
        while(current != NULL && current->id<num){
            linkp = current;
            current = current->next;
        }
        new_id->id = num;
        new_id->next = current;
        if(linkp == NULL){
            l->root = new_id;
        }else if(num < l->root->id){
            l->root = new_id;
        }else{
            linkp->next = new_id;
        }
    }

    从大到小排序

    // test1107.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "stdio.h"
    #include "memory.h"
    #include <string.h>
    #include <stdlib.h>
    #include "string.h"
    
    typedef struct LINK{
        int id;
        LINK *next;
    }Link;
    
    typedef struct LL{
        Link *root;
        int num;
    }Ll;
    
    void insert(Ll *l,int num);
    
    int main(){
        Ll *ll = (Ll *)malloc(sizeof(Ll));
        ll->num = 0;
        ll->root = NULL;
        insert(ll,5);
        insert(ll,2);
        insert(ll,20);
        insert(ll,1);
        insert(ll,5);
        insert(ll,100);
        Link *link = (Link *)malloc(sizeof(Link));
        printf("%d",ll->root->id);
        link = ll->root->next;
        while(link != NULL){
            printf("->%d",link->id);
            link = link->next;
        }
        getchar();
        return 0;
    }
    
    void insert(Ll *l,int num){
        Link * linkp = (Link *)malloc(sizeof(Link));
        Link * current =  (Link *)malloc(sizeof(Link));
        Link * new_id = (Link *)malloc(sizeof(Link));
        current = l->root;
        linkp = l->root;
        while(current != NULL && current->id>num){
            linkp = current;
            current = current->next;
        }
        new_id->id = num;
        new_id->next = current;
        if(linkp == NULL){
            l->root = new_id;
        }else if(num > l->root->id){
            l->root = new_id;
        }else{
            linkp->next = new_id;
        }
    }

  • 相关阅读:
    KFC
    肯德基champs各个字母代表什么_百度知道
    《一席》更新至93—教育—优酷网,视频高清在线观看
    童启华:一个做包子的—在线播放—《一席》—教育—优酷网,视频高清在线观看
    甘其食_百度百科
    乡村基关闭北京上海全部门店 退回西南市场_网易财经
    出兑_百度百科
    美食广场
    架构师招聘-民生电子商务有限责任公司-北京招聘-智联招聘
    架构师招聘-民生电子商务有限责任公司-北京招聘-智联招聘
  • 原文地址:https://www.cnblogs.com/xing901022/p/3430162.html
Copyright © 2011-2022 走看看