c++之旅第十一弹——顺序表

2024-07-08 1055阅读

大家好啊,这里是c++之旅第十一弹,跟随我的步伐来开始这一篇的学习吧!

如果有知识性错误,欢迎各位指正!!一起加油!!

创作不易,希望大家多多支持哦!

c++之旅第十一弹——顺序表

一,数据结构的概念:

1.什么是数据结构?

数据结构是指计算机存储和组织数据的方式

使用合理的数据结构能够提高程序的运行效率,内存利用率等

2.数据结构的两个层次:

(1)逻辑结构:分为线性和非线性两种,线性即为没有分支的一个接着一个,非线性即为有分支或无逻辑上的连续关系

(2)存储结构:

①线性:分为连续存储(数组)和链式存储(链表)

②非线性:索引存储和散列存储

二,顺序表:

1.属于线性表中的连续存储型

2.顺序表的特点:

(1)、因为地址是连续的所以可以通过下标(索引)访问

(2)、顺序表可以是静态(静态定好大小的数组)也可以是动态(用指针来开辟的空间)

(3)、顺序表随机访问方便,但是插入和删除中间的数据比较困难

3.顺序表的功能实现及完善:(eg:数组的增删查改)

类模板的使用可以避免每一次使用时需要写逻辑代码:

头文件CMyArray.h内容如下:

template //typename可以用来替换class 
class CMyArray
{
    T *pBuff;
    size_t maxSize;
    size_t len;
public:
    CMyArray();
    CMyArray(CMyArray const& other);
    ~CMyArray();
public:
    void push_back(T const& elem);//尾部添加
    void insert(int index, T const& elem);//在index位置插入
    void pop_back();//尾部删除
    void erase(int index);//删除index位置的值
    T& at(int index);//得到下标index的值
    int find(T const& elem) const;//查找参数是否在数组中
public:
    bool empty() const;//判断当前数组是否是空
    size_t size() const;//得到当前数组元素个数
    size_t maxLen() const;//得到当前数组可以存放的最大元素个数
private:
    void _resetMemory();//扩容内存
};
​
template 
void CMyArray::_resetMemory()
{
    if (len >= maxSize)
    {
        maxSize += (maxSize >> 1) > 1 ? (maxSize >> 1) : 1;
        T *pTemp = new T[maxSize];
        for (size_t i = 0; i = (int)len)
        throw "out_of_range";
    return pBuff[index];
}
​
template 
void CMyArray::erase(int index)
{
    if (index = (int)len)
        throw "out_of_range";
    for (size_t i = index; i = (int)maxSize)
        throw "out_of_range";
    //if (len >= maxSize)
    //{
    //  maxSize += (maxSize >> 1) > 1 ? (maxSize >> 1) : 1;
    //  T *pTemp = new T[maxSize];
    //  for (size_t i = 0; i = index; --i)
        pBuff[i + 1] = pBuff[i];
    pBuff[index] = elem;
    len++;
}
​
template 
void CMyArray::push_back(T const& elem)
{
    //if (len >= maxSize)
    //{
    //  maxSize += (maxSize >> 1) > 1 ? (maxSize >> 1) : 1;
    //  T *pTemp = new T[maxSize];
    //  for (size_t i = 0; i  

.cpp文件内容如下:

 
#include "CMyArray.h"
void main()
{
    CMyArray ma;
    for (int i = 0; i  
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]