1:完成尾删函数:int list_delete_tail(Linklist *L);
int list_delete_tail(linklist*h)
{
if(h==NULL||linklist_empty(h))
{
printf("链表为空,无法删除n");
return -1;
}
linklist*p=h;
linklist*q=p->next;
while(q->next)
{
p=p->next;
q=q->next;
}
free(q);
p->next=NULL;
h->len--;
return 0;
}
2:完成按位置修改函数 : int list_update_pos(Linklist *L, int pos, datatype e);
int list_updata_pos(linklist*h,int pos,datatype value)
{
if(pos<1||pos>=h->len)
{
printf("位置错误n");
return 0;
}
for(int i=0;inext;
}
h->data=value;
printf("修改成功n");
return 1;
}
3:完成按值修改函数: int list__update_value(Linklist *L, datatype old_e, datatype new_e);
int list_updata_value(linklist*h,datatype old_e,datatype new_e)
{
int flag=1;
while(h->next)
{
h=h->next;
if(h->data==old_e)
{
h->data=new_e;
flag=0;
}
}
if(flag)
printf("输入错误,没有该数n");
else
printf("修改成功n");
}
4:完成链表反转函数:void list_reverse(Linklist *L);
void list_reverse(linklist*h)
{
linklist*p=h->next;
h->next=NULL;
h->len=0;
while(p->next)
{
linklist_headinsert(h,p->data);
p=p->next;
}
linklist_headinsert(h,p->data);
}
void linklist_reverse(linklist*h)
{
linklist*p=h->next;
h->next=NULL;
linklist*q=p;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=h->next;
h->next=q;
}
}
结果演示:



