单链表操作
2014-05-21 11:14
141 查看
#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); }
后序链表学习继续补充。