问题描述:假设有一个循环链表的长度大于1,且表中既无头结点也无头指针,已知s为指向链表中某结点的指针,试编写算法在链表中删除s所指结点的前驱结点。
思路:设置一个指针p,从s开始遍历整个表,停在s的前驱结点的前驱结点的位置,以便于删除s的前驱结点。
程序代码:
void deleteAheadElement(PNode s)
{
PNode p,q;
p = s;
while(p->link->link != s)
p = p->link;
q = p->link;
p->link = s;
free(q);
}