#include <iostream>
#include <list>
using namespace std;
struct Node
{
int data;
Node *pNext;
};
/*查找其中的数据并删除*/
bool Delete(Node *pNode, int data)
{
Node *pPre = NULL;
while (pNode)
{
if (pNode->data == data)
{
pPre->pNext = pNode->pNext;
delete pNode;
return true;
}
pPre = pNode;
pNode = pNode->pNext;
}
return false;
}
/*删除倒数第几个数*/
bool Delete2(Node *pNode, int n)
{
Node *pResult = pNode;
Node *pTmpNode = pNode;
while (n > 0 && pTmpNode)
{
pTmpNode = pTmpNode->pNext;
n--;
}
Node *pPre = NULL;
while (pTmpNode && pResult)
{
pPre = pResult;
pResult = pResult->pNext;
pTmpNode = pTmpNode->pNext;
}
if (pResult)
{
pPre->pNext = pResult->pNext;
delete pResult;
return true;
}
return false;
}
int main()
{
Node *n1 = new Node;
n1->data = 1;
Node *n2 = new Node;
n2->data = 2;
Node *n3= new Node;
n3->data = 3;
Node *n4 = new Node;
n4->data = 4;
Node *n5 = new Node;
n5->data = 5;
n5->pNext = nullptr;
n1->pNext = n2;
n2->pNext = n3;
n3->pNext = n4;
n4->pNext = n5;
//Delete(n1, 4);
Delete2(n1, 2);
return 0;
}
链表的删除
最新推荐文章于 2023-01-11 14:43:56 发布