C++实现链表(linked list)

2 篇文章 0 订阅
1 篇文章 0 订阅
#include"Header.h"
#include<iostream>
#include<cstdlib>
#include<cstring>


using namespace std;


class AList:public List
{
private:
    int listSize;
    int curr;
    int maxSize;
    int *listArray;
public:
    AList(int value=10)
    {
        listArray=new int[value];
        curr=listSize=0;
        maxSize=value;
    }
    AList(const AList& it)
    {
        listSize=it.listSize;
        curr=it.curr;
        maxSize=it.maxSize;
        listArray=it.listArray;
    }
    void operator=(const AList& it)
    {
        listSize=it.listSize;
        curr=it.curr;
        maxSize=it.maxSize;
        listArray=it.listArray;
    }
    ~AList()
    {
        delete[] listArray;
    }
    
    void clear()
    {
        listSize=curr=0;
        for(int i=0;i<maxSize;i++)
        {
            listArray[i]=0;
        }
    }
    void insert(const int it)
    {
        for(int i=listSize;i>0;i--)
        {
            listArray[i]=listArray[i-1];
        }
        listArray[curr]=it;
        listSize++;
    }
    void append(const int it)
    {
        listArray[listSize]=it;
        listSize++;
    }
    int remove()
    {
        int temp;
        temp=listArray[curr];
        for(int i=curr;i<listSize-1;i++)
        {
            listArray[i]=listArray[i+1];
        }
        listSize--;
        return temp;
    }
    void prev()
    {
        curr=curr-1;
    }
    void next()
    {
        curr=curr+1;
    }
    void moveToStart()
    {
        curr=0;
    }
    void moveToEnd()
    {
        curr=listSize-1;
    }
    int length()
    {
        return listSize;
    }
    int getValue()
    {
        return listArray[curr];
    }
    void setPos(int a)
    {
        curr=a;
    }
    void show()
    {
        for(int i=0;i<listSize;i++)
        {
        cout<<listArray[i]<<"  ";
        }
    }
    void remove2(int num)
    {
        int i;
        for(i=0;i<listSize;i++)
        {
        if(listArray[i]==num)
            break;
        }
        setPos(i);
        remove();
        moveToStart();
    }
};


int main()
{
    int it;
    AList a(5);
    for(int i=0;i<5;i++)
    {
        cin>>it;
    a.insert(it);
    }
    a.show();
    cout<<endl;
    a.remove2(15);
    a.show();
    cout<<endl;
    return 0;
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值