#include<iostream>
#include<stdlib.h>
using namespace std;
struct ListNode
{
int m_nValue;
ListNode *m_pNext;
ListNode(int n){ m_nValue = n; m_pNext = NULL; }
};
void DeleteNode(ListNode ** pListHead, ListNode * pToBeDeleted)
{
if (!pListHead || !pToBeDeleted)
return;
if (pToBeDeleted->m_pNext != NULL)
{
ListNode *pNext = pToBeDeleted->m_pNext;
pToBeDeleted->m_nValue = pNext->m_nValue;
pToBeDeleted->m_pNext = pNext->m_pNext;
delete pNext;
pNext = NULL;
}
else if (*pListHead == pToBeDeleted)
{
delete pToBeDeleted;
pToBeDeleted = NULL;
pListHead = NULL;
}
else
{
ListNode *pNode = *pListHead;
while (pNode->m_pNext != pToBeDeleted)
{
pNode = pNode->m_pNext;
}
pNode->m_pNext = NULL;
delete pToBeDeleted;
pToBeDeleted = NULL;
}
}
int main()
{
struct ListNode *pListHead, *p, *q, *t;
int i, n, a;
ListNode * a1 = new ListNode(5);
ListNode * a2 = new ListNode(6);
ListNode * a3 = new ListNode(7);
ListNode * a4 = new ListNode(8);
a1->m_pNext = a2;
a2->m_pNext = a3;
a3->m_pNext = a4;
t = a1;
while (t != NULL)
{
cout << t->m_nValue << " ";
t = t->m_pNext;
}
cout << endl;
DeleteNode(&a1,a3);
t = a1;
while (t != NULL)
{
cout << t->m_nValue<<" ";
t = t->m_pNext;
}
system("pause");
}
剑指offer 十三题 在O(1)时间删除链表结点
猜你喜欢
转载自blog.csdn.net/chuquanchang1051/article/details/80448912
今日推荐
周排行