|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 剑雨君 于 2014-8-18 19:42 编辑
//插入操作(注:该插入函数对插入到中间和插入到尾部的数都没问题,只有插入到头部才有问题。注释中写的代码(有3处)才完全正确)
void insert( Node *head /* Node **head */, int new_value )
{
Node *current;
Node *previous;
Node *new_p;
//得到第一个节点的指针
current = head; //current = *head;
previous = NULL;
//寻找正确的插入位置,方法是按序访问链表,直到到达一个其值大于或等于新值的节点
while( current != NULL && current->value < new_value )
{
previous = current;
current = current->link;
}
//为新节点分配内存
new_p = ( Node * )malloc( sizeof( Node ) );
if( new_p == NULL )
exit( 0 );
new_p->value = new_value;
//把新节点插入到链表中
new_p->link = current;
if( previous == NULL )//新节点是第一个的情况
head = new_p; //*head = new_p;
else
previous->link = new_p;
}
|
|