类方法实现带头节点的单链表代码

#include<iostream>
using namespace std;
class Link
{
public:
 Link()//构造函数
 {
  _phead = new Node();
 }
 ~Link()//析构函数
 {
  Node* pCur = _phead;
  Node* _pNext = pCur;
  while(pCur != NULL)
  {
   _pNext = pCur->_pnext;
   delete pCur;
   pCur = _pNext;                                      
  }
  _phead = NULL;
 }
 void insertHead(int val)//头插法
 {
  Node* pnewnode = new Node(val);
  pnewnode->_pnext = _phead->_pnext;
  _phead->_pnext = pnewnode;
 }
 void insertTail(int val)//尾插法
 {
  Node* pnewnode = new Node(val);
  Node* ptail = _phead;
  while(ptail->_pnext != NULL)
  {
   ptail = ptail->_pnext;
  }
  ptail->_pnext = pnewnode;
 }
 void deleteNode(int val)//删除链表所有值为val的节点
 {
  Node* pfront = _phead;
  Node* pCur = NULL;
  while(pfront->_pnext != NULL)
  {
   if(pfront->_pnext->_data == val)
   {
    pCur = pfront->_pnext;
    pfront->_pnext = pCur->_pnext;
    delete pCur;
   }
   else
   {
    pfront = pfront->_pnext;
   }
  }
 }
 void Show()
 {
  Node* pCur = _phead->_pnext;
  while(pCur != NULL)
  {
   std::cout<<pCur->_data<<"";
   pCur = pCur->_pnext;
  }
  std::cout<<std::endl;
 }
private:
  class Node
  {
  public:
   Node(int data = 0):_data(data),_pnext(NULL){}
   int _data;
   Node *_pnext;
  };
  Node* _phead;
};
int main()
{
 return 0;
}

发布了27 篇原创文章 · 获赞 8 · 访问量 1524

猜你喜欢

转载自blog.csdn.net/qq_43824618/article/details/102470363