//11、按值查找返回元素位置
int search_pos(node_p H,datatype key)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(empty_link(H))
{
printf("链表为空\n");
return;
}
//从头结点开始遍历整条链表
node_p p = H->next;
for(int i=1;p!=NULL;i++)
{
p=p->next;
if(p->data==key)
{
return p->len;
}
}
printf("没找到值\n");
}
//12、按位置查找返回值
int search_value(node_p H,datatype pos)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(empty_link(H))
{
printf("链表为空\n");
return;
}
if(pos<=0||pos>H->len)
{
printf("该位置不对\n");
return;
}
//从头结点开始遍历整条链表
node_p p = H->next;
for(int i=1;i<len;i++)
{
p=p->next;
if(i==pos-1)
{
return p->data;
}
}
printf("没找到值\n");
}
//释放链表
void del_list(node_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(empty_link(H))
{
printf("链表为空,无需释放\n");
return;
}
node_p del =H->next;
for(int i=1>e;i0<len-1;i++)
{
free(del);
del=del->next;
}
}
//逆置
void overturn_link(node_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(link_empty(H))
{
printf("链表为空\n");
return;
}
if(H->next->next==NULL)
{
printf("表中只有一个元素,无需翻转\n");
return;
}
}