1>按位置修改函数
//
Linklist *find_node(Linklist *L,int pos)
{
if(NULL == L || pos<0 || pos>L->len)
{
printf("查找失败\n");
return NULL;
}
Linklist *q = L;
for(int i= 1; i<=pos;i++)
{
q= q->next;
}
return q;
}
//
int list_update_pos(Linklist *L,int pos,datatype e)
{
if(NULL == L|| list_empty(L) ||pos<1||pos>L->len)
{
printf("修改失败\n");
return -1;
}
Linklist *q=find_node(L,pos-1);
Linklist *p=q->next;
p->data =e;
printf("修改成功\n");
}
2>尾删函数
int list_delete_tail(Linklist *L)
{
if(NULL == L || list_empty(L))
{
printf("删除失败\n");
return -1;
}
Linklist *q =L;
while(q->next->next != NULL)
{
q=q->next;
}
q->next = NULL;
L->len--;
printf("删除成功\n");
}
3>按值修改函数
//
int list_search_value(Linklist *L,datatype e)
{
if(NULL ==L||list_empty(L))
{
printf("查找失败\n");
return -1;
}
Linklist *q =L->next;
for(int i=1;i<=L->len;i++)
{
if(q->data == e)
{
return i;
}
q=q->next;
}
return 0;
}
//
int list_update_pos(Linklist *L,int pos,datatype e)
{
if(NULL == L|| list_empty(L) ||pos<1||pos>L->len)
{
printf("修改失败\n");
return -1;
}
Linklist *q=find_node(L,pos-1);
Linklist *p=q->next;
p->data =e;
printf("修改成功\n");
}
//
int list_update_value(Linklist *L,datatype olde,datatype newe)
{
if(NULL == L|| list_empty(L))
{
printf("修改失败\n");
return -1;
}
int n =list_search_value(L,olde);
list_update_pos(L,n,newe);
printf("修改成功\n");
}
4>链表反转函数
void list_reverse(Linklist *L)
{
if(NULL == L || L->len <=1)
{
printf("反转失败\n");
return ;
}
Linklist *r=L->next;
L->next = NULL;
Linklist *q=NULL;
while(r!=NULL)
{
q=r;
r=r->next;
q ->next = L->next;
L->next =q;
}
printf("反转成功\n");
}