#include <iostream>
using namespace std;
struct ListNode{
int m_iValue;
ListNode* m_pNext;
};
//添加节点
void AddToTail(ListNode** pHead,int val)
{
ListNode* pNewNode=new ListNode;
pNewNode->m_iValue=val;
pNewNode->m_pNext=NULL;
if (*pHead==NULL)
{
*pHead=pNewNode;
}
else
{
ListNode* pNode=*pHead;
while(pNode->m_pNext!=NULL)
pNode=pNode->m_pNext;
pNode->m_pNext=pNewNode;
}
}
//删除节点
void RemoveNode(ListNode** pHead, int val)
{
if (pHead==NULL || *pHead==NULL)
return;
ListNode* pToBeDeleted=NULL;
if ((*pHead)->m_iValue==val)
{
pToBeDeleted=*pHead;
*pHead=(*pHead)->m_pNext;
}
else
{
ListNode* pNode=*pHead;
while(pNode->m_pNext!=NULL && pNode->m_pNext->m_iValue!=val)
pNode=pNode->m_pNext;
if (pNode->m_pNext!=NULL)
{
pToBeDeleted=pNode->m_pNext;
pNode->m_pNext=pToBeDeleted->m_pNext;
}
}
if (pToBeDeleted!=NULL)
{
delete pToBeDeleted;
pToBeDeleted=NULL;
}
}
//后序打印
void PrintReverse(const ListNode* pNode)
{
if (pNode->m_pNext!=NULL)
{
PrintReverse(pNode->m_pNext);
}
cout<<pNode->m_iValue<<endl;
}
int main()
{
ListNode* pList=NULL;
ListNode** pHead=&pList;
for (int i=0;i<10;++i)
{
AddToTail(pHead,i);
}
RemoveNode(pHead,7);
PrintReverse(*pHead);
}
后序链表学习继续补充。