顺序表的实现

本文详细介绍了模板类AList的实现方式,包括初始化、插入、追加、删除元素等功能,以及内部的数据结构和操作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

template <class Elem>
class AList : public List<Elem> {
private:
    int maxSize;
    int listSize;
    int fence;
    Elem* listArray;

public:
    AList(int size=DefaultListSize) {
        maxSize = size;
        listSize = fence = 0;
        listArray = new Elem[maxSize];
    }

    ~AList() { delete [] listArray; }
    void clear() {
        delete [] listArray;
        listSize = fence = 0;
        listArray = new Elem[maxSize];
    }
    bool insert(const Elem& item) {
        if (listSize == maxSize) return false;
        for (int i = listSize; i > fence: i--)
            listArray[i] = listArray[i-1];
        listArray[fence] = item;
        listSize++;
        return true;
    }

    bool append(const Elem& item) {
        if (listSize == maxSize) return false;
        listArray[listSize++] = item;
        return true;
    }

    bool remove(Elem& it) {
        if (rightLength() == 0) return false;
        it = listArray[fence];
        for (int i=fence; i<listSize-1; ++i) {
            listArray[i] = listArray[i+1];
        listSize--;
        return true;
    }

    void setStart() {fence = 0;]
    void setEnd() { fence = listSize;}
    void prev() {if (fence!=0) fence--;]
    void next() {if (fence<=listSize) fence++;]
    int leftLength() const {return fence;}
    int rightLength() const {return listSize - fence;}

    bool setPos(int pos) {
        if ((pos>=0) && (pos<=listSize)) fence = pos;
        return (pos>=0) && (pos<=listSize);
    }

    bool getValue(Elem& it) const {
        if (rightLength() == 0) return false;
        else { it = listArray[fence];return true;}
    }

};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值