当前位置: 首页 > article >正文

day02 1.c++对c的扩充

#include <iostream>

using namespace std;

//类型重命名
using datatype = int;     //typedef int datatype;
#define MAX 30


struct  SeqList
{
    private:
       // datatype data[MAX] = {0};                //顺序表的数组
        datatype *data;                //顺序表的数组
        int size = 0;                      //数组的大小
        int len = 0;                     //顺序表实际长度


     public:
         //初始化函数
         void init(int s)
         {
             size = s;            //当前数组的最大容量
             data = new datatype(size);      //在堆区申请一个顺序表容器
         }
         //要实现的函数


         //判空函数
         bool empty();
         //判满函数
         bool full();
         //添加数据函数
         bool add(datatype e);
         //求当前顺序表的实际长度
         int length();


         //任意位置插入函数
         bool insert_pos(int pos, datatype e);
         //任意位置删除函数
         bool delete_pos(int pos);
         //访问容器中任意一个元素 at
         datatype &at(int index);

         void show();
         //君子函数:二倍扩容
         void expend();
};

int main()
{
    SeqList p1;
    p1.add(1);
    p1.add(3);
    p1.add(5);
    p1.add(7);
    p1.add(9);
    p1.show();

    cout << p1.length() <<endl;

    p1.insert_pos(2,10);
    p1.insert_pos(1,10);
    p1.insert_pos(8,10);

    p1.delete_pos(1);
    p1.delete_pos(7);
    p1.delete_pos(5);

    p1.at(7);
    return 0;

}

//判空函数
bool SeqList :: empty()
{
    return len == 0;
}

//判满函数
bool SeqList :: full()
{
    return len >= MAX;
}

//添加数据函数
bool SeqList :: add(datatype e)
{
    if(full())
    {
        return false;
    }
    data[len] = e;
    len++;
    return true;
}

//求当前顺序表的实际长度
int SeqList :: length()
{
    return len;
}

//任意位置插入函数
bool SeqList :: insert_pos(int pos, datatype e)
{
    if(full() || pos<0 || pos>len+1)
    {
        return false;
    }
    if(pos == len+1 )
    {
        data[len] = e;
    }else
    {
        for(int i=len;i>=pos-1;i--)
        {
            data[i] = data[i-1];
        }
        data[pos-1] = e;
    }
    len++;
    show();
    return true;
}

//任意位置删除函数
bool SeqList :: delete_pos(int pos)
{
    if(empty() || pos<1 || pos>len)
    {
        return false;
    }
    for(int i=pos;i<len;i++)
    {
        data[i-1] = data[i];
    }
    len--;
    show();
    return true;
}

void SeqList :: show()
{
    for(int i=0;i<len;i++)
    {
        cout << data[i] << " ";
    }
    cout <<endl;
}

//访问容器中任意一个元素 at
datatype &SeqList :: at(int index)
{
    return data[index];
}

//君子函数:二倍扩容
void SeqList :: expend()
{

}


http://www.kler.cn/news/290025.html

相关文章:

  • 学习关系型数据库:在MAC下编译安装firebird
  • 【iOS】——分类拓展关联对象
  • iOS面试:BAD_ACCESS在什么情况下出现?
  • SQL 语言简明入门:从历史到实践
  • BaseCTF之web(week2)
  • springboot使用swagger生成接口文档
  • 华为 HCIP-Datacom H12-821 题库 (6)
  • Leetcode236经典题目二叉树的最近公共祖先
  • CAD二次开发IFoxCAD框架系列(26)- 分段测量多段线长度和计算多边形的面积
  • CTFHub技能树-备份文件下载-网站源码
  • 一款用于分析java socket连接问题的工具
  • 【蓝桥杯青少组】第十五届省赛python(2024)
  • UE5.3 新学到的一些性能测试合计(曼巴学习笔记)
  • Unet改进10:在不同位置添加CPCA||通道先验卷积注意力机制
  • ARM内存屏障/编译屏障API(__DMB、__DSB、__ISB)用法及举例
  • 基于Spring的Uniapp自动更新实现方法
  • 一篇常见第三方库之以及详细使用示例教程
  • C++第四十五弹---深入理解包装器:提升代码复用性与安全性的利器
  • 浙大数据结构:01-复杂度3 二分查找
  • 一文读懂期权交易规则和操作方法分享
  • gitk无法打开
  • Python将两个Excel文件按相同字段合并到一起
  • gcc编译与Linux下的库
  • k8s dial tcp 10.97.0.1:443: i/o timeout
  • 帮招一名3C大佬机器视觉工程师,工作地:苏州,月薪25K-30K,30岁以下,Halcon独立开发,单休,有管理经验更佳有绩效奖
  • 飞利浦开放式耳机怎么样?飞利浦、西圣、漫步者爆火机型大对决!
  • SprinBoot+Vue宠物领养救助微信小程序的设计与实现
  • 解决firewalld启动状态下docker无法启动
  • AI时代的信仰是什么
  • macbook怎么换自定义壁纸?Mac怎么设置壁纸 macOS中如何轻松删除不需要的壁纸?