看吧:
在公有区域,实现了以下这些功能,对这些功能进行拆分和优化,可以满足不同的需求,缺点:没有对申请内存的地方做很好的优化,我也想了想,如果要去做优化的话,自己去做一个内存池会比较好一点,抽时间去做做吧。私有的话,我放的是一个头指针,这里仁者见仁,智者见智。
void LinkList ::ShowList()
{
LNode *tmp = node->next;
while(tmp)
{
cout<data<<"->";
tmp = tmp->next;
}
cout<<endl;
}
int LinkList ::ListLength()
{
return node->sum;
}
bool LinkList ::ListDelete(int i)
{
if(i > node->sum || i <= 0)return FALSE;
LNode *tmp = node;
LNode * p=tmp->next;
while(–i)
{
tmp = tmp->next;
p=tmp->next;
}
tmp ->next = p->next;
delete p;
node->sum–;
}
void LinkList ::ListInsert(int i , Elemtype val)
{
if(node->sum+1 < i)
{
i = node->sum+1;
}
else if(i <= 0)
{
i = 1;
}
LNode *p = new LNode();
p->data = val;
p->next = NULL;
LNode *pnode= node;
while(–i)
{
pnode = pnode->next;
}
LNode *s = pnode->next;
p->next = s;
pnode ->next = p;
node->sum++;
}
int LinkList ::LocateElem(Elemtype val)
{
if(!(node->sum))return FALSE;
LNode *tmp = node->next;
int i = 1;
while(tmp)
{
if(tmp->data == val)
{
return i;
}
tmp = tmp->next;
i++;
}
return -1;
}
Elemtype LinkList :: GetElem(int i)
{
if(i > node->sum || i <= 0)
{
cout<<“error”<<endl;
return -1;
}
LNode *tmp = node;
while(i–)
{
tmp = tmp -> next;
}
return tmp -> data;
}
bool LinkList :: ListEmpty()
{
if(node->sum)
{
return FALSE;
}
return TRUE;
}
void LinkList :: ClearList()
{
LNode * tmp = node->next->next;
LNode * p = node->next;
while(tmp != NULL)
{
delete p;
p = tmp;
tmp = tmp ->next;
}
delete p;
node->sum = 0;
node->next = NULL;
}
LinkList :: LinkList()
{
node = new LNode();
node -> sum = 0;
node -> next = NULL;
}
LinkList ::LinkList(const LinkList & Strlist)
{
int n = Strlist.node->sum;
LNode * tmp = Strlist.node->next;
node = new LNode();
node ->sum = n;
node -> next = NULL;
while(tmp)
{
node->next = new LNode();
node = node->next;
node->data = tmp ->data;
tmp = tmp->next;
}
node->next = NULL;
}
LinkList :: ~LinkList()
{
LNode * tmp = node->next;
LNode * p = node;
while(tmp != NULL)
{
delete p;
p = tmp;
tmp = tmp ->next;
}
delete p;
}