/**********查找函数。基于不带表头的链表**********/
//返回值是当前查找值的结点指针,没有则
//返回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;
}
本文详细介绍了基于不带表头的链表实现的查找与插入函数。查找函数能够定位指定数据的结点指针,而插入函数可在指定位置或末尾插入新数据。文章通过具体代码展示了如何高效地进行链表数据管理和维护。
951

被折叠的 条评论
为什么被折叠?



