我是这样实现删除操作的
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)
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)
2017-06-08
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; //一个节点都没有找到
}
{
Node *currentNode = m_pList;
for (int i = 0; i <= m_iLength; i++)
{
currentNode = currentNode->next;
if (currentNode->data == pNode->data)
{
return i;
}
}
return -1; //一个节点都没有找到
}
2017-06-08
老师插入的时候没有考虑到插入最后一个节点的下一个,这个包含了尾插入,所以你应该这样判断
if (i < 0 || i > m_iLength + 1)
{
return false;
}
i在这里可以等于m_iLength +1;
这种情况就是尾插入了
if (i < 0 || i > m_iLength + 1)
{
return false;
}
i在这里可以等于m_iLength +1;
这种情况就是尾插入了
2017-06-08
newNode->next = m_pList->next;
m_pList->next = newNode;
插入节点的时候这个可以有,就是不太容易理解
m_pList->next = newNode;
插入节点的时候这个可以有,就是不太容易理解
2017-06-08
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上的元素
{
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上的元素
2017-06-07
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;
}
{
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;
}
2017-06-07