解题思路:
(1) 新建单向链表;
(2) 删除链表中的指定值:
步骤一: 排除特殊情况:头结点值等于需要删除值data,则先直接删除头部节点;
步骤二:
使用快慢指针ptemp, qtemp;
if ptemp->Getdata == e
qtemp->Getnext = ptemp->Getnext;
删除ptemp节点
ptemp = qtemp->Getnext;
else
qtemp = ptemp->Getnext;
ptemp = qtemp->Getnext;
bool LinkList::ElemDeleLinkList() //删除指定值
{
int e = 0;
cout << "输入删除的数值:" << " "; cin >> e; cout << endl;
while (m_Head != NULL && m_Head->Getdata() == e) {
// 排除链表头指定值的情况
Node* ptemp; ptemp = m_Head;
m_Head = m_Head->Getnext();
delete ptemp;
}
Node* ptemp, * qtemp;// p:较快地指针, q:较慢指针
ptemp = qtemp = m_Head;
while (ptemp != NULL) {
if (ptemp->Getdata() == e) {// 第一个p肯定不会是data
qtemp->Setnext(ptemp->Getnext());
delete ptemp;
ptemp = qtemp->Getnext();
}
else {
qtemp = ptemp;
ptemp = ptemp->Getnext();
}
}
return true;
}
实现效果如下: