单向链表
//按值修改
int value_change(linkListPtr H,DataType e,DataType value)
{
if(NULL==H || empty(H))
{
printf("修改失败\n");
return 0;
}
//找到要修改的值所在的节点
linkListPtr p=H;
for(int i=0;i<H->len;i++)
{
p=p->next;
if(p->data==value)
{
p->data=e;
return 1;
}
}
//找不到这数据
printf("没有这个数据");
return 0;
}
//按值查找,返回当前节点的地址
linkListPtr value_find(linkListPtr H,DataType value)
{
if(NULL==H || empty(H))
{
printf("查找失败\n");
return NULL;
}
//找到要查找的值所在的节点
linkListPtr p=H;
for(int i=0;i<H->len;i++)
{
p=p->next;
if(p->data==value)
{
return p;
}
}
printf("没有这个数据");
return NULL;
}
//反转
linkListPtr reverse(linkListPtr H)
{
if(NULL==H || H->len<=1)
{
printf("反转失败\n");
return NULL;
}
linkListPtr H2=H->next;
H->next=NULL;
linkListPtr q=NULL;
while(H2!=NULL)
//for(int i=0;i<H->len;i++)
{
q=H2;
H2=H2->next;
//头插
q->next=H->next;
H->next=q;
}
return H;
}
//销毁链表
void free_link(linkListPtr H)
{
if(NULL==H)
{
printf("销毁失败\n");
}
while(H->next!=NULL)
{
tail_del(H);
}
free(H);
H=NULL;
}