删除链表中相邻元素,如
1, 2, 3,3,4, 4
操作之后得到
1, 2, 3, 4
代码:
struct ListNode
{
int nData;
ListNode* pNext;
};
void Unique(ListNode* pHead)
{
// 链表无节点或者只有1个节点
if (NULL == m_pHead || NULL == m_pHead->pNext)
return;
ListNode* pCur = m_pHead;
while (pCur->pNext != NULL)
{
ListNode* pNext = pCur->pNext;
// 下一元素与当前元素相等,删除下一元素
// 当前元素的下一元素为下一元素的下一元素
if (pNext->nData == pCur->nData)
{
pCur->pNext = pNext->pNext;
delete pNext;
continue;
}
// 不等,当前元素跳到下一元素
pCur = pNext;
}
}