当前位置:首页>汽车>正文

删除p节点的直接前驱 实现在循环单链表中删除某个节点p的前驱节点

2023-04-11 21:15:06 互联网 未知 汽车

删除p节点的直接前驱 实现在循环单链表中删除某个节点p的前驱节点

实现在循环单链表中删除某个节点p的前驱节点

int delprior(LinkList p){
LinkList q=p,r
if(q->next==p) return ERROR
else{
while(q->next->next!=p)q=q->next
r=q->next
q->next=r->next
free(r)
return TRUE
}}

怎么找到要删除结点的前驱结点

typedef struct node {
int data
struct node *next
}

//找到返回true,否则返回false,其中pre是指向存储前一结点地址的指针
//若是头结点则*pre为NULL,因为头结点无前驱结点。
//您要的查找2的调用例子如下,head为链表的首结点指针:
// Node *pre = NULL
// if (getPreNode(head, &pre, 2))
// 找到了,pre即指向2的前驱结点
// else
// 没找到
bool getPreNode(Node *head, Node **pre, int findvalue)
{
*pre = NULL
if (head == NULL)
return false
if (head->data == findvalue)
return true

*pre = head
while((*pre)->next != NULL)
{
if ((*pre)->next->data == findvalue)
return true
*pre = (*pre)->next
}
return false
}

最新文章