一、思维导图
二、
1】按值修改
2】按值查找,返回当前节点的地址 (先不考虑重复,如果有重复,返回第一个)
3】反转
4】销毁链表
//按值修改
int value_change(linklistptr H,datatype e,int value)
{
if(H==NULL||empty(H))
{
printf("修改失败\n");
return 0;
}
linklistptr p=H;
for(int i=0;i<H->len;i++)
{
p=p->next;
if(p->data==e)
p->data=value;
}
return 1;
}
//按值查找
linklistptr value_find(linklistptr H,datatype e)
{
if(H==NULL||empty(H))
{
printf("查找失败\n");
return 0;
}
linklistptr p=H;
int flag=0;
for(int i=0;i<H->len;i++)
{
p=p->next;
if(p->data==e)
{
flag=1;
return p;
}
}
if(flag==0)
printf("查无此数据\n");
}
//链表逆置
int inversion(linklistptr H)
{
if(H==NULL||empty(H))
{
printf("逆置失败\n");
return 0;
}
linklistptr p=H->next->next;
H->next->next=NULL;
linklistptr q;
while(p!=NULL)
{
q=p->next;
p->next=H->next;
H->next=p;
p=q;
}
}
//销毁链表
void free_link(linklistptr *H)
{
if(*H==NULL)
{
printf("销毁失败\n");
return;
}
free(*H);
*H=NULL;
}