双向循环尾删和释放
link delete_rear(link l)
{
if(NULL==l)
{
return NULL;
}
else if(l==l->next)
{
free(l);l=NULL;
}
else
{
link q=l->priv->priv;
q->next=l;
l->priv=q;
free(q);q=NULL;
}
return l;
}
link shifang(link l)
{
if(NULL==l)
{
return l;
}
else
{
while(l->next!=l)
{
l=delete_rear(l);
}
l=delete_rear(l);
}
return l;
}
双向链表尾删和释放
double_link delete_rear(double_link l)
{
if(NULL==l)
{
return NULL;
}
else if(NULL==l->next)
{
free(l);l=NULL;
}
else
{
double_link p=l;
while(p->next->next!=NULL)
{
p=p->next;
}
free(p->next);p->next=NULL;
}
return l;
}
double_link shifang(double_link l)
{
if(NULL==l)
{
return NULL;
}
while(l!=NULL)
{
l=delete_rear(l);
}
return l;
}
思维导图