很简单的一个c单链表错误,求改错
红色是错误的地方!
#include<iostream.h>
#include<stdlib.h>
class List;
class LinkNode
{
friend class List;
private:
int data;
LinkNode *link;
};
class List
{
public:
bool Insert(int i,int& x);
private:
LinkNode* first;
};
bool List::Insert(int i,int& x)
{
if(first==NULL||i==0)
{
LinkNode* newNode=new LinkNode(x);
if(newNode==NULL)
{cerr<<"存储分配错误!\n";exit(1);}
newNode->link=first;first=newNode;
}
else
{
LinkNode * current=first;
for(int k=1;k<i;k++)
if(current==NULL)break;
else current=current->link;
if(current==NULL)
{cerr<<"无效的插入位置!\n";return false;}
else{
LinkNode* newNode=new LinkNode(x);
if(newNode==NULL){cerr<<"存储分配错误!\n";exit(1);}
newNode->link=current->link;
current->link=newNode;
}
}
return true;
}
[解决办法]
LinkNode的默认构造函数是没有参数的,像上面说的,你自己写一个带参数的构造函数就行了~
如:LinkNode(int i):data(i){}