单链表类有关问题(包含了运算符重载)

单链表类问题(包含了运算符重载)
单链表类实现如下:
#include   <iostream.h>
#include   <iomanip.h>
#include   "MyList.h "

//无参构造函数
MyList::MyList()
{
head   =   NULL;
}

//析构函数
MyList::~MyList()
{
NODE   *p=head,*q;

if   (head   ==   NULL)
return;
else
{
while(p!=NULL)
{
q=p-> next;
delete   p;
p=q;  
}
}
}

//增加一个节点
int   MyList::AddNode(int   num)
{
NODE   *p;

p   =   head;
head   =   new   NODE;
if   (head   ==   NULL)
return   -1;

head-> num   =   num;
head-> next   =   p;
return   0;
}

//输出整个链表
void   MyList::DisplayList()
{
NODE   *p;
int   i=0;

cout < < "链表为: " < <endl;
p=head;
while(p!=NULL)
{
cout < <setw(10) < <p-> num;
i++;
if(i%10==0)
cout < <endl;
p=p-> next;
}
cout < <endl;
}

//定义拷贝构造函数
MyList::MyList(const   MyList   &src)
{
head=NULL;
NODE   *p=src.head;
while(p!=NULL)
  {
    AddNode(p-> num);
    p=p-> next;
  }
}
//前自增
MyList   &MyList::operator   ++()
{
NODE   *p;
p=head;
while(p!=NULL)
  {
    (p-> num)++;
    p=p-> next;
  }
return   *this;
}
//后自增
MyList   MyList::operator   ++(int)
{
MyList   m(*this);         //调用拷贝构造函数
NODE   *p;
p=head;
while(p!=NULL)
  {
    (p-> num)++;
    p=p-> next;
  }
return   m;                     //返回原来链表
}
int   MyList::FindNode(int   num)
{
NODE   *p;
p=head;
while(p!=NULL&&p-> num!=num)
    p=p-> next;
if(p!=NULL)   return   1;
else   return   0;
}
int   MyList::DelNode(int   num)
{
NODE   *p,*q;
q=p=head;
while(p-> num!=num&&p!=NULL)
{
  q=p;
  p=p-> next;
}
if(p!=NULL)
{
  q-> next=p-> next;
  if(p==head)
  {
      head=head-> next;
  }
  delete   p;
  return   1;
}
else   return   0;
}

主函数如下:
#include   <iostream.h>
#include   "MyList.h "

int   main()
{
MyList   obj;
obj.AddNode(4);
obj.AddNode(3);
obj.DisplayList();  
(obj++).DisplayList();
(++obj).DisplayList();
return   1;
}

运行结果如下:

链表为:
                  3                   4
链表为:
                  3                   4
链表为:
                  5                   6