链表删除操作里面陷入了死循环是为什么
while(notedata!=p➡️data&&p➡️next!=null)这里陷入了死循环,和答案对照感觉没有问题啊
写的不对,修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
struct link{
int data;
struct link *next;
};
struct link *DeleteNode(struct link *head, int noteData)
{
struct link *p = head, *pr = NULL;
if (!head)
return NULL;
if (p->data == noteData){
head = p->next;
free(p);
}
else{
while (p->next && p->next->data != noteData) {
p = p->next;
}
if (p->next) {
pr = p->next;
p->next = p->next->next;
free(pr);
}
else
printf("no!!!!");
}
return head;
}
看看链表怎么创建的,最后一个元素是否指向null,是否链表中存在环(后面的节点又指向了前面的节点)