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

  • 相关阅读:
    spyder学习记录---如何调试
    Pycharm学习记录---同一目录下无法import明明已经存在的.py文件
    python库之matplotlib学习---图无法显示中文
    python之字典遍历方法
    python库之matplotlib学习---关于坐标轴
    将博客搬至CSDN
    C代码实现栈
    Android进程间通讯
    Android进程间通讯之messenger
    C代码实现非循环单链表
  • 原文地址:https://www.cnblogs.com/xing901022/p/3430162.html
Copyright © 2011-2022 走看看