#include <iostream>
#include <string>
using namespace std;
class Elemt
{
private:
int mi;
public:
Elemt *next;
Elemt()
{
mi = 0;
next = NULL;
}
~Elemt()
{
if(next)
{
free(next);
}
next = NULL;
}
int getMi()
{
return mi;
}
void setMi(int m){mi=m;}
void print()
{
cout<<"mi=="<<getMi()<<endl;
if(next)
{
cout<<"have other element"<<endl;
}else{
cout<<"no more element"<<endl;
}
}
};
class LinkList
{
private:
Elemt *p;
long len;
public:
LinkList()
{
len = 0;
p = NULL;
}
~LinkList(){if(p) free(p);p=NULL;}
long getLen(){return len;}
Elemt * getHead(){return p;}
int Inst(Elemt e,const int i);
Elemt Dlt(const int i);
void lenPlus(){len++;}
};
int LinkList::Inst(Elemt e,int i)
{
// cout<<"inst 111"<<endl;
Elemt *pt = (Elemt*)malloc(sizeof(Elemt));
if(!pt)
{
return -1;
}
// cout<<"inst 222"<<endl;
*pt=e;
Elemt *h=getHead();
if( getLen() < i-1)
{
free(pt);
return -1 ;
}
if(0==getLen())
{
p = pt;
pt->next = NULL;
lenPlus();
return 1;
}
// cout<<"inst 333"<<endl;
int j=2;
for( ;j<i;j++)
{
h=h->next;
}
// cout<<"inst 444"<<endl;
// pt->print();
// h->print();
pt->next = h->next;
// cout<<"inst 555"<<endl;
h->next=pt;
// cout<<"inst 666"<<endl;
lenPlus();
return 1;
}
Elemt LinkList::Dlt(const int i)
{
Elemt e;
return e;
}
int main()
{
cout<<"Linked List begin"<<endl;
LinkList ll;
//cout<<"11111"<<endl;
//cout<<"22222"<<endl;
for(int i=1 ; i<10 ; i++)
{
Elemt e;
e.setMi(i);
ll.Inst(e,i);
}
Elemt *pt=ll.getHead();
while(pt)
{
pt->print();
pt = pt->next;
}
cout<<"Linked List end"<<endl;
return 0;
}