链表的有序插入
时间:2022-04-22
本文章向大家介绍链表的有序插入,主要内容包括从小到大排序、从大到小排序、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
从小到大排序
根据指针获取当前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;
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法