最赞回答 / 0puppy0
bool List::ListDelete(int i,Node *pNode) { if(i<0 || i>=m_iLength) return false; Node *currentNode=m_pList; //保存头节点 Node *currentNodeBefore=NULL; //头节点前一个节点不存在,为NULL for(int k=0;k<=i;k++) //查找第i个节点 { ...
2017-03-24
个人意见:
在删除通讯录的功能中,我们需要提示用户输入需要删除的person的名字(要用户说出号码比较不友好吧),这样在寻找过程中比对两个person相等就会出错(因为电话号码未知),导致找不到这个person。这是因为在Person.cpp中重载的==运算符对比了号码和名字,为了简便操作应该把对比号码的步骤删掉吧(当然不考虑通讯录里同名的情况,谁的通讯录里会有重名的呢?!)。
在删除通讯录的功能中,我们需要提示用户输入需要删除的person的名字(要用户说出号码比较不友好吧),这样在寻找过程中比对两个person相等就会出错(因为电话号码未知),导致找不到这个person。这是因为在Person.cpp中重载的==运算符对比了号码和名字,为了简便操作应该把对比号码的步骤删掉吧(当然不考虑通讯录里同名的情况,谁的通讯录里会有重名的呢?!)。
2017-03-22
老师用 if 判断语句的目的是为了让大家养成处理异常的习惯吧,但这样处理是不对的:
(1)如果new成功,那么newNode == 0 永不成立,自然不会return false
(2)如果new失败,那么直接抛出异常,new语句下的其他语句就不会再执行了。
应该这么写:Node* newNode = new (std::nothrow)Node(),这样设置就不会抛出异常了
(1)如果new成功,那么newNode == 0 永不成立,自然不会return false
(2)如果new失败,那么直接抛出异常,new语句下的其他语句就不会再执行了。
应该这么写:Node* newNode = new (std::nothrow)Node(),这样设置就不会抛出异常了
2017-03-20