链表的有序插入

匿名 (未验证) 提交于 2019-12-02 23:43:01

从小到大排序

根据指针获取当前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;     } }

转载于:https://my.oschina.net/u/204616/blog/545521

文章来源: https://blog.csdn.net/weixin_34167819/article/details/91989437
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!