这一个比较简单高效单向链表插入算法
#include <stdlib.h>
#include <stdio.h>
typedef struct NODE{
struct NODE *link;
int value;
}Node;
#define FALSE 0
#define TRUE 1
int sll_insert( register Node **linkp, int new_value)
{
register Node *current;
register Node *new_node;
/*
*寻找正确的插入位置
*/
while(( current = *linkp ) != NULL && current->value < new_value)
{
linkp = ¤t->link;
}
/*
*为新节点分配内存
*/
new_node = (Node*)malloc(sizeof(Node));
if( new_node == NULL)
return FALSE;
new_node->value = new_value;
/*
*在链表中插入新节点
*/
new_node->link = current;
*linkp = new_node;
return TRUE;
}