为了账号安全,请及时绑定邮箱和手机立即绑定
ATEM0那个方法确实可以不用定义currentNodeBefore,但是你有没有想过这样就无法delete需要删除的node了?

最新回答 / Cyber丶Kaka
我的理解是这样的:因为即使有的位置没有赋值,但还算线性表的内容,只不过它们的内容为空值,但它们仍然是有索引的.这里i的作用只是要它满足线性表的索引即可,如果写成i<m_iLength,可能程序运行并没有问题,但是从逻辑上讲i并没有遍历到所有的线性表索引,这个循环是不完整的.

最新回答 / 慕运维9949243
因为两个都是指针,所以这句直接等于的
事....事倍功半??

最新回答 / Alex_ZM
除头结点以外的结点已经被删除了,此时剩下的头结点的指针域没有一个确定的指向,如果设成NULL的话,就像相当于回到单链表的最初始状态。
Node *currentNode=m_pList;
Node *currentNodeBefore=nullptr;
for(int a=0;a&lt;i;a++)
currentNode=currentNode-&gt;next;
currentNodeBefore=currentNode;
currentNode=currentNode-&gt;next;
currentNodeBefore-&gt;next=currentNode-&gt;next;
pNode-&gt;data=currentNode-&gt;data;

这么写是一种更高效的循环。
void DeleteContact(List *pList)
{
Node node;
Person person;
cout &lt;&lt; &quot;Please input name:&quot; &lt;&lt; endl;
cin &gt;&gt; person.name;
cout &lt;&lt; &quot;Please input phone number:&quot; &lt;&lt; endl;
cin &gt;&gt; person.phone;
node.data = person;
int num = 0;
num = pList-&gt;LocatedElem(&amp;node);
pList-&gt;ListDelete(num, &amp;node);
}

最新回答 / 化身孤岛的鲸i
第一个&代表的是返回值类型是 Person对象的引用啊

已采纳回答 / 慕婉清5403551
严格来讲是没有用的,之所以这样写是为了在测试的时候,看一下我们删除的对不对,通过*e就可以看出来
课程须知
"本课程是数据结构初级课程 1、熟练掌握C++语言基础语法"
老师告诉你能学到什么?
1、顺序表的工作原理 2、顺序表的实现方法及编码技巧 3、链表的工作原理 4、链表的实现方法及编码技巧 5、通讯录的实现原理及编码技巧

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消