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;
        }
    }

  • 相关阅读:
    Python:遍历文件目录及子目录,并批量改变文件名称
    python:利用递归遍历文件夹所有文件(包括子文件夹里的文件)
    python文件,文件夹操作
    Ubuntu安装vim报错的的处理
    Centos7安装Chrome
    Centos7更换阿里yum源
    CentOS7设置启动默认界面方法
    Vim快捷键学习---记性不行了,留这里备查
    第7-9章作业汇总
    第四次作业---第三题陈岩岩
  • 原文地址:https://www.cnblogs.com/xing901022/p/3430162.html
Copyright © 2011-2022 走看看