赞
踩
题目: 假设长度大于1的循环单链表中,既无头结点也无头指针,p为指向该链表中某一结点的指针,编写一个函数删除该结点的前驱结点。(出自2018-1)
解答:
算法思想:定义一个辅助结点s,使s->next->next一直与p做对比,当等于p时,s-next即为p的前驱结点,s为p的前驱结点的前驱结点。
void DeletePreNode(LNode *p) {
LNode *q, *s; //结点s为辅助结点,结点q为要寻找的结点
s = p;
while (s->next->next != p) {
s = s->next;
}
q = s->next; //找到了结点p的前结点
s->next = p; //将结点q的前结点s的下一指针指向p
free(q);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。