int insert_node(node** root_point, int insert_value) //插入函数,第一个参数为指向头结点指针的指针,第二个参数为插入的值。
//因为你想要插入的值可能要放在第一个节点前面。
{
node* current; //指向现在所在的节点
node* previous; //指向前一个节点
node* new_node; //新的节点
current = *root_point;
previous = NULL;
/*
寻找插入位置,按序访问链表,知道找到一个其值大于或等于新值的节点
*/
while (current!=NULL&¤t->data<insert_value)
{
previous = current;
current = current->next;
}
/*
为新的节点(new_node)分配内存,并把值储存在新的节点内
如果分配内存失败返回0。
*/
new_node = (node*)malloc(sizeof(Node));
if (new_node == NULL)
return false;
new_node->data = insert_value;
//把新节点插入链表
new_node->next = current;
if (previous==NULL)
{
*root_point = new_node;
}
else
{
previous->next = new_node;
}
return 1;
}
下一章为优化插入函数