假设在长度大于1的循环链表中,即无头结点也无头指针,s为指向链表中的某个结点的指针,试编写算法删除结点s的前驱结点

来源:互联网 发布:java责任链设计模式 编辑:程序博客网 时间:2024/04/29 16:23
结构体:
struct DulNode{    int a;    struct DulNode * next;};

/*中间是建循环链表和对链表其他操作的代码*/


//前提是s结点是循环链表中的一个结点
void del(struct DulNode * s){    struct DulNode *q, *p1, *p2;    //q是搜索s前驱的前驱,p1是搜索s前驱,p2是搜索s    q = s;    p1 = q->next;    p2 = p1->next;    while(p2 != s)    {        p2 = p2->next;        p1 = p1->next;        q = q->next;    }    q->next = p2;    delete(p1);}


0 0
原创粉丝点击