为了账号安全,请及时绑定邮箱和手机立即绑定
为什么不用类模板,慢慢注释data好麻烦啊
老师讲的真的是超级详细,大学时候学这个的时候没有意识到重要性,现在又回来重新学了,加油hcy!
蒙了,哈哈。事倍功半。吓死我了
老师讲的真的特别好 一步一步来 很精髓
我用java实现了线性表,有兴趣的小伙伴可以看看噢http://t.cn/RocDIi7

最新回答 / Daniel9618
因为locateElem函数要求形参是指针类型的,而priorElement函数中形参currentElem也是指针类型,所以不用加*
我是这样实现删除操作的
void deletePerson(List *pList)
{
Node node;
cout << "请输入一个你想删除联系人的姓名: ";
cin >> node.data.name;
int number = pList->LocateElem(&node);
pList->ListDelete(number, &node);
}
由于是根据名字删除,所以ListDelete函数实现的时候只需要姓名相同就可以了,不考虑(同名情况,太少)
if (currentNode->data.name == pNode->data.name)
感谢James,能不能在录一下C++ 有关于Qt的内容,收费也行,要的点赞
看到这里才恍然大悟,老师以前的插入运算没有错,我倒是错了,凡是遇到这种问题万万不能大意
int List::LocateElem(Node *pNode) //将指定节点的顺序写出来
{
Node *currentNode = m_pList;
for (int i = 0; i <= m_iLength; i++)
{
currentNode = currentNode->next;
if (currentNode->data == pNode->data)
{
return i;
}
}

return -1; //一个节点都没有找到
}
老师插入的时候没有考虑到插入最后一个节点的下一个,这个包含了尾插入,所以你应该这样判断
if (i < 0 || i > m_iLength + 1)
{
return false;
}
i在这里可以等于m_iLength +1;
这种情况就是尾插入了
newNode->next = m_pList->next;

m_pList->next = newNode;
插入节点的时候这个可以有,就是不太容易理解
bool List::ListDelete(int i, Elem *e)
{
if (ListEmpty() || i >= m_iLength || i < 0)
{
return false;
}

*e = m_pList[i];
for (int k = i + 1; k < m_iLength; k++)
{
m_pList[k - 1] = m_pList[k];
}
m_iLength--;
return true;
}
这里的i指的是删除数组索引i上的元素
bool List::ListInsert(int i, Elem *e) //i的意思并不是下标,而是第i个元素
{
if (i < 0 || i > m_iLength || m_iLength == m_iSize || ((i != 0) && ListEmpty()))
{
return false;
}

for (int k = m_iLength - 1; k >= i; k--)
{
m_pList[k + 1] = m_pList[k];
}
m_pList[i] = *e;
m_iLength++;
return true;
}
课程须知
"本课程是数据结构初级课程 1、熟练掌握C++语言基础语法"
老师告诉你能学到什么?
1、顺序表的工作原理 2、顺序表的实现方法及编码技巧 3、链表的工作原理 4、链表的实现方法及编码技巧 5、通讯录的实现原理及编码技巧

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消