1、尾删
int list_deltail(link_list *l)
{
if(list_empty(l)||NULL==l){
printf("表没东西\n");
return -1;
}
link_list *q=l;
while(q->next->next!=NULL){
q=q->next;
}
free(q->next);
q->next=NULL;
}
2、按位修改
int list_change_pos(link_list *l,int pos,datatype e)
{
if(list_empty(l)||NULL==l||pos<1||pos>l->len){
printf("表没东西\n");
return -1;
}
link_list *q=l;
for(int i=0;i<pos;i++){
q=q->next;
}
q->data=e;
}
3、按值修改
//按值修改(简易版)
int list_change_val(link_list *l,datatype e_old,datatype e_new)
{
if(list_empty(l)||NULL==l){
printf("表没东西\n");
return -1;
}
int pos=list_search_val(l,e_old);
list_change_pos(l,pos,e_new);
}
//按值修改(完全版)
int list_change_val(link_list *l,datatype e_old,datatype e_new)
{
if(list_empty(l)||NULL==l){
printf("表没东西\n");
return -1;
}
link_list *q=l;
while(q->next!=NULL)
{
q=q->next;
if(q->data==e_old)
{
q->data=e_new;
return 1;
}
}
printf("没有那个值\n");
}
4、链表反转
void list_reverse(link_list *l)
{
if(list_empty(l)||NULL==l){
printf("表没东西\n");
return;
}
int count;
datatype temp;
link_list *q=l;
for(int i=0;i<l->len/2;i++){
q=q->next;
link_list *r=l;
for(int j=0;j<l->len-i;j++){
r=r->next;
}
temp=q->data;
q->data=r->data;
r->data=temp;
}
printf("反转完成\n");
}