我正试着写个 单链表,但是插入操作一直有问题,检查了多遍也看不出算法的错误。望各位大哥大姐指点指点啊!
错误提示说:“ 未处理的“System.NullReferenceException”类型的异常出现在 temp.exe 中。
其他信息: 未将对象引用设置到对象的实例。” 不懂。
#include <iostream>
#include <string>
using namespace std;
class linklist{
public:
int data;
linklist *next;
};
class operate{
public:
operate(){ init_list(sq);}
void init_list(linklist *&sq);
int get_lenth(linklist *sq);
void insert_elem(linklist *sq,int e,int i);
void display(linklist *sq);
private:
linklist *sq;
};
//---------------------类operate的成员函数定义:--------------------------
void operate::init_list(linklist*&sq){//初始化表,并为其提供一个头节点.
sq=new linklist;
sq->next=NULL;
}
int operate::get_lenth(linklist*sq){//返回表长.
linklist *p=sq;
int len=0;
while(p->next!=NULL){
p=p->next;
len++;
}
return len;
}
void operate::insert_elem(linklist *sq,int e,int i){//在第i个位置插入记录e.
if((i>get_lenth(sq)+1)||(i<=0)){
cout<<"Inserting elem failed!"<<endl;
}
linklist *p=sq;
linklist *insert;
insert=(linklist*)malloc(sizeof(linklist));
insert->data=e; insert->next=NULL;
int j=0;
while(j+1<i){
p=p->next;
j++;
}
insert->next=p->next;
p->next=insert;
}
void operate::display(linklist *sq){//输出表中各元素.
linklist *p=sq;
while(p){
cout<<p->data<<' ';
p=p->next;
}
}
//-----------------------------主函数:-----------------------------
void main()
{
linklist *base;
operate action;
action.insert_elem(base,10,1);
action.display(base);
}