class Linknode
{
friend class Keyi;
public:
Linknode* link;
int data;
Linknode(int x=NULL){data=x;}
};
class Keyi
{
Linknode* frist;
Linknode* rear;
public:
Keyi(){frist=new Linknode();rear=frist;}
void set(int x);
bool isempty();
bool sert(int x,int y);
bool insert(int x,int y);//无效
bool search(int x);
bool remove(int x);
int length();
void out();
};
void Keyi::set(int x)
{
Linknode* newnode=new Linknode(x);
rear->link=newnode;
rear=newnode;
}
bool Keyi::isempty()
{
if(frist==rear&&rear==NULL) return true;
}
bool Keyi::sert(int x,int y)
{
if(isempty()==true) return false;
int k=0;
Linknode* p=frist;
while(k<=x)
{
p=p->link;
k++;
}
p->data=y;
return true;
}
bool Keyi::insert(int x,int y)
{
if(isempty()==true) return false;
int k=0;
Linknode* p=frist;
Linknode* current=new Linknode(y);
while(k<=x)
{
p=p->link;
k++;
}
current->link=p->link;
p->link=current;
return true;
}
bool Keyi::remove(int x)
{
if(isempty()==true) return false;
int k=0;
Linknode* p=frist;
Linknode* current=new Linknode();
while(k<=x-1)
{
p=p->link;
k++;
}
current=p->link;
p=current->link;
delete current;
return true;
}
int Keyi::length()
{
int k=0;
Linknode* p=frist;
while(p!=NULL)
{
p=p->link;
k++;
}
return k;
}
void Keyi::out()
{
Linknode* p=frist;
/*p=p->link;*/
while(p!=NULL)
{
cout<<p->data<<endl;//这有问题,输出时多了两个
p=p->link;
}
}
void key()
{
Keyi ss;
ss.set(1);
ss.set(2);
/*ss.insert(1,3);*/
ss.set(4);
/*ss.remove(2);*/
ss.out();
}
咋还自己写这样的数据结构呢,找个现成的用就行了,
先不说功能有没有实现,你连线程安全还都没考虑,还不知道最后还会出多少错。
刚学数据结构应该要亲身试验一次
帮顶,看不懂。呵呵。