/**********查找函数。基于不带表头的链表**********/
//返回值是当前查找值的结点指针,没有则
//返回NULL
linck *Findlinck(linck *root, int data)
{
linck *ptr;
ptr = root;
while(ptr != NULL)
{
if(data == ptr->x )
{
return ptr;
}
else
{
ptr = ptr->next;
}
}
return NULL;
}
/**********插入函数*************/
//参数为头结点、插入的位置和插入的数
//插入的方法是在 insert后插入data
//表中没有insert 则在最后位置插入
linck *Insertlinck(linck *root, int insert, int data)
{
linck *ptr; //传递指针
linck *newlinck; //新结点
linck *pInsert; //插入位置指针
newlinck = (linck*)malloc(sizeof(linck));
if(!newlinck)
{
printf("内存分配失败!!!/n");
exit(1);
}
newlinck->next = NULL;
newlinck->x = data;
ptr = root;
pInsert = Findlinck(root, insert);
if(NULL == pInsert) //如果表中没有insert此数,则插入在最后
{
while(ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = newlinck;
}
else
{
while(ptr != NULL)
{
if(pInsert == ptr) //插入新数据
{
newlinck->next = ptr->next->next;
ptr->next = newlinck;
break;
}
else
{
ptr = ptr->next;
}
}
}
return root;
}