实现如下有序的单链表:
创建数据结构:
typedef struct NODE {
int value;
struct NODE *link;
} Node;
- 版本一:
int ssl_insert(Node *current, int new_value) {
Node *previous;
Node *new_node;
while(current->value < new_value) {
previous = current;
current = current->link;
}
new_node = malloc(sizeof(Node));
if(new_node == NULL) {
return FALSE;
}
new_node->value = new_value;
new_node->link = current;
previous->link = new_node;
return TRUE;
}
这个是一个最简单的版本,从链表的起始位置访问链表,依次比对要插入的值和当前的节点值,当前值大于要插入的值时就停下来,函数里面使用了一个previous指针,指向上一个节点,因为找到要插入的位置时已经越过了要插入的