数组梁.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组梁

第5章 数组 主讲:梁宝兰 第5章 数组 教学要求: 理解和掌握:数组的基本概念,与线性表的区别,定位数组元素的计算公式(按行/列存储),动态数组类的声明与实现(申请、释放、构造、赋值、重置、下标运算等),常用特殊矩阵(对称矩阵、上/下三角矩阵)的存储及表示方式,稀疏矩阵的三元组表示方式及转置运算的实现。 内容提要 数组的基本概念 动态数组类 特殊矩阵 稀疏矩阵 5.1 数组的基本概念 一、数组的定义 数组是n(n>1)个相同数据类型的数据元素a0,a1,a2,...,an-1构成的占用一块地址连续的内存单元的有限序列。 数组中任意一个元素可以用该元素在数组中的位置来表示,数组元素的位置通常称作数组的下标。 5.1 数组的基本概念 5.1 数组的基本概念 数组和线性表相比: 相同之处: 都是若干个相同数据类型的数据元素 不同之处 (1)元素是否可以再分解; (2)操作不同; (3)存储空间是否连续; ADT 数组 数据集合: 数组的数据集合可以表示为a0, a1, a2, ..., an-1,每个数据元素的数据类型为抽象数据元素类型DataType。 操作集合: (1)初始化数组 Initiate(D) (2)取数组元素个数 Size(D) (3)存数组元素 Storage(D,i,x) (4)取数组元素 Get(D, i) End ADT 5.2 动态数组类 一、动态数组的有关概念 动态数组与静态数组的区别: 静态数组在定义时就必须给出数组个数; 动态数组是在具体申请存储单元空间时才给出数组元素的个数。 在C++语言中,动态创建数组的运算符是new,动态撤消组的运算符是delete。 5.2 动态数组类 一、动态数组的有关概念 申请数组占用的内存空间 数据类型 *指针名 = new 数据类型[数组元素个数]; 如:int *pa = new int[10]; 释放数组中占用的内存空间 delete []指针名; 如:delete []pa; 二、动态数组类的实现 typedef int DataType; class Array { public: Array(int sz = 100); //构造函数 Array(const Array a); //拷贝构造函数 ~Array(void); //析构函数 int Size(void)const; //取数组个数 void operator=(const Array a); //赋值运算符重载 DataType operator[](int i); //下标运算符重载 void Resize(int sz); //重置数组 private: int size; //数组元素个数 DataType* arr; //存储数组元素的 }; 二、动态数组类的实现 构造函数 Array::Array(int sz) { if(sz = 0) { cout 无效的数组个数 endl; exit(0); } arr = new DataType[sz]; //为数组申请内存空间 size = sz; //置数组个数 } 二、动态数组类的实现 拷贝构造函数 Array::Array(const Array a) { arr = new DataType[a.size]; //申请内存空间 //数组元素赋值 for(int i = 0; i a.size; i++) arr[i] = a.arr[i]; size = a.size; //置数组个数 } 二、动态数组类的实现 析构函数 Array::~Array(void) { delete []arr; //释放内存空间 } 取数组元素个数 int Array::Size(void)const { return size; } 二、动态数组类的实现 赋值运算符重载 void Array::operator=(const Array a) { delete []arr; //释放原内存空间 arr = new DataType[a.size]; //申请新内存空间 for(int i = 0; i a.size; i++) //数组元素赋值 arr[i] = a.arr[i]; size = a.size; //置数组个数 } 二、动态数组类的实现 下标运算符重载 DataType Array:: operator[](int i) { if(i 0 || i si

文档评论(0)

xyz118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档