带头结点的单链表拷贝构造函数
本人写的链表如下# include <iostream>
using namespace std ;
class Node
{
public :
int data ;
Node * link ;
Node ()
{
link = NULL;
}
Node (int element)
{
data = element ;
link = NULL ;
}
};
# include "Node.h"
class LinkedList
{
public:
Node * head ;
int count ;
public:
LinkedList () ; //置空表
LinkedList(LinkedList & use);//拷贝构造函数
void ConstructList (int use[],int size);//建立链表
int GetLength () ; //求长度
void GetData(const int index ,Node & out); //取出序一定号的元素
Node * GetPointer (int i) ;//返回一定序号对应的元素的指针
void Delete (int j) ;//删除某一指定位置的节点
void Insert (Node & use,int position);//将给定结点插入到给定位置
void Deletepointed (int x); //删除表中值等于指定值的结点
void DefaultInsert(Node &use);//默认于表尾插入元素
void Display ();//显示所有元素
void Sort ( );//排序
void Seperate (LinkedList & p,LinkedList & q,LinkedList & source);//分离奇数项和偶数项至不同的链表中
void Cross (LinkedList & p,LinkedList & q,LinkedList & output);//求两个递增链表的交
void Insertat(const int x,int position);//在指定position之前插入值为x的结点
void InsertSorted (Node & use);//在有序链表中插入一结点到应有的位置
void Insertathead (int w);//在链表的头端插入一值为w的结点
~ LinkedList () ;//析构函数
};
拷贝构造函数如下,但运行崩溃,请问哪位高手能指点迷津,帮忙写一个正确的?(其它函数均已测试正确)
LinkedList ::LinkedList ()//构造函数
{
count = 0;
head = new Node() ;
}
LinkedList::LinkedList(LinkedList & use)
{
count = use.count ;
Node* l=use.head->link;
if(l==NULL)
{
count=0;
head->link = NULL;
}
else
{
head->link = new Node(l->data);
Node *r=head->link;
l=l->link;
while(l!=NULL)
{
r->link=new Node(l->data);
r=r->link;
l=l->link;
}
count=use.count;
}
}