问题描述
- 单链表中查找结点p并删除结点p
- pointer *p*q=NULL;
p=find(headi+1);
cout<data< q->next=p;
q->next=p->next;
delete p;
}
网上的实现方法都是删除p的后继结点,我想直接删除p,按照我的想法上述语句应该是正确的,但是执行时候在q->next=p出显示又断点,怎么破 大神救我
解决方案
你应该从头结点开始遍历
比如说头结点为 L;
假设你要删的结点为p
设置一个 q=L;
m=q->next;
while(m->next!=null)
{
if(m==p)
{
q->next=m-next;
}
else
{
m=m->next;
q=q->next;
}
}
解决方案二:
coutnext=p;这里q都没初始化,还是null,怎么能q->next呢。
解决方案三:
coutnext=p;这里q都没初始化,还是null,怎么能q->next呢。
解决方案四:
如果 p 就是 head,那么直接 head = p->next。
否则先得把 q 定位到 p 得前面一个,然后才能 q->next = p->next。
如果 find 就是定位到第几个,就是 q = find(headi);否则你要把 q 从 head 开始遍历,一直到 q->next 是 p 为止,
解决方案五:
必须把q定位到p前面。若果p是头,q就是null如果不是头,q必须紧跟p的移动,且q始终是p的前一个
解决方案六:
要想删除P一定要先找到它的前一个节点。
解决方案七:
我说下思路啊、、你要准备2个指针,一个指查找的节点,一个指刚才那个节点的上一个节点。。列入H是指头节点,B是第二个节点(头节点后的),
那找到P节点时,应该是B指到P这个节点,H指P前面一个节点。。。现在只是找到了,下一步就是删除。
把P节点中下一个节点的地址赋值到H后面,就是H直接连接P后面那个节点就删除P了。。
不知道你懂了没
时间: 2024-09-16 05:00:58