使用C++实现链表

看吧:
在公有区域,实现了以下这些功能,对这些功能进行拆分和优化,可以满足不同的需求,缺点:没有对申请内存的地方做很好的优化,我也想了想,如果要去做优化的话,自己去做一个内存池会比较好一点,抽时间去做做吧。私有的话,我放的是一个头指针,这里仁者见仁,智者见智。
在这里插入图片描述
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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值