创建一个节点
typedef struct NODE
{
struct NODE *link;
int value;
}Node;
调用有序链表的插入函数:
//插入到一个有序链表。函数的参数是一个指向链表根指针的指针,以及一个需要插入的新值
result=sll_insert(&root,12);
插入函数1
#include <stdlib.h>
#include <stdio.h>
#define FALSE 0
#define TRUE 1
int sll_insert(Node **rootp,int new_value)
{
Node *current;
Node *previous;
Node *new;
//指向第一个指针的节点
current=*rootp;
previous=NULL;
//寻找正确的插入位置,方法是按顺序访问链表,直到达到一个其值大于或者等于新值的节点
while(current!=NULL && current->value<new_value)
{
previous=current;
current=current->link;
}
//为新节点分配内存,并把新值存储到新的节点中,如果内存分配失败,函数返回FALSE
new=(Node*)malloc(sizeof(Node));
if(new==NULL)
{
return FALSE;
}
new->value=new_value;
//把新节点插入到链表中,并返回TRUE
new->link=current;
if(previous==NULL)
{
*rootp=new;
}
else
{
previous->link=new;
}
return TRUE;
}
插入函数2
#include <stdlib.h>
#include <stdio.h>
#define FALSE 0
#define TRUE 1
int sll_insert(register Node **linkp,int new_value)
{
register Node *current;
register Node *new;
//寻找正确的插入位置,方法是按顺序访问链表,直到达到一个其值大于或者等于新值的节点
while((current=*linkp)!=NULL && current->value<new_value)
{
linkp=¤t->link;
}
//为新节点分配内存,并把新值存储到新的节点中,如果内存分配失败,函数返回FALSE
new=(Node*)malloc(sizeof(Node));
if(new==NULL)
{
return FALSE;
}
new->value=new_value;
//把新节点插入到链表中,并返回TRUE
new->link=current;
*linkp=new;
return TRUE;
}