解题思路:
(1) 新建单向链表;
(2) 删除链表中的指定值:
步骤一:排除特殊情况:头结点值等于需要删除值data,则先直接删除头部节点;
步骤二:
使用快慢指针ptemp, qtemp;
if ptemp->Getdata =https://www.it610.com/article/= 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;
}
实现效果如下:
文章图片
【c++|C++实现之单链表中删除指定值】
推荐阅读
- 单片机stm32|学习单片机切记这四点要求,少走弯路
- 业界资讯|TIOBE 5 月编程语言排行榜(C# 最受开发者欢迎,C++ 将冲击 Top 3)
- 一起刷好题|《力扣每日一题》—— 合并两个有序链表
- 一起刷好题|力扣每日一题(环形链表II)
- leetcode|力扣刷题 16.合并两个有序数组——简单题
- AcWing|AcWing 每日一题 2022/5/5【2022. 倍数 17】
- AcWing|AcWing 每日一题 2022/5/6【2012. 一排奶牛】
- #|华为机试第六题(HJ6 质数因子)
- 排序算法|两个基本排序算法【选择排序,冒泡排序】【详解】