zoukankan      html  css  js  c++  java
  • 二、线性表的顺序存储结构

    1、顺序存储的定义

    定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表中的数据元素

    | (a_1) | ...... | (a_{i-1}) | (a_i) | ...... | (a_{n-1}) |

    2、相关操作

    程序设计思路:

    可以用一维数组来实现顺序存储结构

    • 存储空间:T* m_array
    • 当前长度:int m_length
    template <typename T>
    class SeqList : public  List<T>
    {
    protected:
        T* m_array;
        int m_length;
    }
    

    顺序存储结构的元素获取操作:

    • 判断目标位置是否合法
    • 将目标位置作为数组下标获取元素
    bool SeqList<T>::get(int i, T& e) const
    {
        bool ret = ((0 <= i) && (i < m_length));
        if (ret)
        {
            e = m_array[i];	// 用数组访问的方法获取数组元素
        }
        return ret;
    }
    

    顺序存储结构的元素插入操作:

    • 判断目标位置是否合法
    • 将目标位置及目标位置之后的所有元素后移一个位置
    • 将新元素插入目标位置
    • 线性表长度加1
    bool SeqList<T>::insert(int i, const T& e)
    {
    	bool ret = ((0 <= i) && (i <= m_length));
    	ret = ret && ((m_length + 1) <= 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++;
    	}
    }
    

    顺序存储结构的元素删除操作:

    • 判断目标位置是否合法
    • 将目标位置后的所有元素前移一个位置
    • 线性表长度减1
    bool SeqList<T>::remove(int i)
    {
    	bool ret = ((0 <= i) && (i < m_length));
    	if (ret)
    	{
    		for (int p = i; p < m_length-1; p++)
    		{
    			m_array[p] = m_array[p+1];
    		}
    		m_length--;
    	}
    	return ret;
    }
    
  • 相关阅读:
    XML-Signature 语法和签名
    ZooKeeper相关资料集锦
    分布式锁
    spring-boot 知识集锦
    Spring boot druid 多数据源配置
    常见 SQL 语句的加锁分析
    fastjson反序列化多层嵌套泛型类与java中的Type类型
    Clean ThreadLocals
    java AOP Before, After, AfterReturning, AfterThrowing, or Around 注解
    java 线程间的通信 (wait / notify / notifyAll)
  • 原文地址:https://www.cnblogs.com/chenke1731/p/9479585.html
Copyright © 2011-2022 走看看