1 //插入到一个有序单链表。函数的参数是一个指向
2 //链表第一个节点的指针,以及一个需要插入的新值
3 #include<stdio.h>
4 #include<stdlib.h>
5 #include"sll_node.h"
6
7 #define FALSE 0
8 #define TRUE 1
9 sill_insert(register Node **linkp,int new_value)
10 {
11 register Node *current;
12 register Node *new;
13 //寻找正确的插入位置,方法是按序访问链表,直到到达一个其值大于或等于新值的节点。
14 while((current=*linkp)!=NULL && current->value<new_value)
15 linkp=¤t->link;
16 //为新节点分配内存,并把新值存储到新节点中,如果内存分配失败,函数返回FALSE
17 new=(Node *)malloc(sizeof(Node));
18 if(new==NULL)
19 return FALSE;
20 new->value=new_value;
21 //在链表中插入新节点,并返回TRUE
22 new->link=current;
23 *Linkp=new;
24 return TRUE;
25 }