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

  • 相关阅读:
    NET与Matlab结合 —— 最小二乘法直线拟合(C#)
    C#基础概念二十五问
    C# where子句
    最小二乘法
    蛙蛙推荐:一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
    在 ASP.NET 上实现锁定表头、支持滚动的表格的做法
    一个使用泛型的工厂类
    反射技术与设计模式
    ASP.NET实现匿名访问控制
    危险字符过滤的类
  • 原文地址:https://www.cnblogs.com/xing901022/p/3430162.html
Copyright © 2011-2022 走看看