若循环单链表长度大于1,p为指向链表中某结点的指针,试编写一算法删除p结点的前驱结点。
参考答案:
Node*delete(p)
Node*P;
{
Node*q, *r;
q=p;
while(q->next!=p) q=q->next;
r=q;
while(r->next!=q) r=r->next;
r->next=p;
free(q);
return(p);
}
若循环单链表长度大于1,p为指向链表中某结点的指针,试编写一算法删除p结点的前驱结点。
参考答案:
Node*delete(p)
Node*P;
{
Node*q, *r;
q=p;
while(q->next!=p) q=q->next;
r=q;
while(r->next!=q) r=r->next;
r->next=p;
free(q);
return(p);
}