創建一個節點
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;
}