顺序存储结构的抽象实现

Posted 学习只为旅行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序存储结构的抽象实现相关的知识,希望对你有一定的参考价值。


#ifndef SEQLIST_H
#define SEQLIST_H

#include "List.h"
#include "Exception.h"

namespace DragonLib
{

template <typename T>
class SeqList : public List<T>
{
protected:
    T* m_array;
    int m_length;
public:
    bool insert(int i,const T& e)
    {
        bool ret = ((0<=i) && (i<=m_length));
        ret = ret && (m_length < capacity());

        if(ret)
        {
            for(int p=m_length-1;p>=i;p--)
            {
                m_array[p+1]=m_array[p];
            }
            m_array[i]=e;
            m_length++;
        }
        return ret;

    }

    bool remove(int i)
    {
        bool ret = ((0<=i) && (i<m_length));

        if(ret)
        {
            for(int p=i;p<m_length;p++)
            {
                m_array[p] = m_array[p+1];
            }
            m_length--;
        }
        return ret;
    }

    bool set(int i,const T& e)
    {
        bool ret = ((0<=i) && (i<m_length));
        if(ret)
        {
            m_array[i]=e;
        }
        return ret;
    }

    bool get(int i,T& e) const
    {
        bool ret = ((0<=i) && (i<m_length));

        if(ret)
        {
            e=m_array[i];
        }
        return ret;
    }

    int length() const
    {
        return m_length;
    }

    void clear()
    {
        m_length=0;
    }

    //顺序存储线性表的数组访问方式
    T& operator[] (int i)
    {
        if((0<=i) && (i<m_length))
        {
            return m_array[i];
        }
        else
        {
            THROW_EXCEPTION(IndexOutOfBoundsException,"Parameter i is invalid...");
        }
    }

    //给const对象调用
    T operator[] (int i) const
    {
        //其实完全可以赋值上面的代码
        //但是可以代码复用,相当于就是调用上面的非const属性的函数
        //首先这个函数被调用,那么对象肯定就是const属性的,先去除const属性
        return (const_cast<SeqList<T>&>(*this))[i];
    }

    //顺序u存储空间的容量
    virtual int capacity() const = 0;//交给子类实现
};
}
#endif // SEQLIST_H

小结

以上是关于顺序存储结构的抽象实现的主要内容,如果未能解决你的问题,请参考以下文章

顺序存储结构的抽象实现

Java数据结构(线性表)--线性表的顺序存储及其实现

数据结构&算法08-栈概念&源码

数据结构-线性表

数据结构-线性表

顺序表