【2012四川大学,数据结构与算法设计】第4讲 数组和广义表
更新时间:2023-07-22 05:42:01 阅读量: 实用文档 文档下载
- 四川大学数据结构期末试题推荐度:
- 相关推荐
Chapter 4 Array & General List
Section 1Array
ADT Array { D={ aj1,j2, ...,,ji, jn|ji=0,...,bi-1, i=1,2,..,n } (n称数组的维数,bi是数组第i维的长度,ji是数组元素的第i维下标)
数组的抽象数据类型定义
基本操作
R={R1, R2, ..., Rn} Ri={<aj1,... ji,... jn ,aj1, ...ji+1, ...jn >|0 jk bk-1, 1 k n且k i, 0 ji bi-2,i=2,...,n }
} ADT Array
二维数组的定义数据对象: D = {aij | 0≤i≤b1-1, 0 ≤j≤b2-1}
数据关系:R = { ROW, COL }
COL = {<ai,j,ai+1,j>| 0≤i≤b1-2, 0≤j≤b2-1}ROW = {<ai,j,ai,j+1>| 0≤i≤b1-1, 0≤ j≤b2-2}
基 本 操 作InitArray(&A, n, bound1, ..., boundn) DestroyArray(&A) Value(A, &x, index1, ..., indexn) Assign(&A, x, index1, ..., indexn)
InitArray(&A, n, bound1, ..., boundn)操作结果:若维数 n 和各维长度 合法,则构造相应的 数组A,并返回OK。
DestroyArray(&A)操作结果:销毁数组A。
Value(A, &x, index1, ..., indexn)初始条件: A是n维数组,x为元素变
量,随后是n 个下标值。操作结果:若各下标不超界,则x赋值 为所指定的A 的元素值,并
返回OK。
Assign(&A, x, index1, ..., indexn)初始条件: A是n维数组,x为 元素变量,随后是n 个下标值。 操作结果:若下标不超界,则 将 x的值赋给所指 定的A的元素,并 返回 OK。
一维数组
定义 相同类型的数据元素的集合。 一维数组的示例0 1 2 3 4 5 6 7 8 9 35 27 49 18 60 54 77 83 41 02
与顺序表的不同在于数组可以按 元素的下标直接存储和访问数组 元素。
一维数组(Array) 类的定义
template <class Type> class Array { Type *elements; //数组存放空间 int ArraySize; //当前长度 void getArray ( ); //建立数组空间 public: Array( int Size=DefaultSize ); Array( const Array<Type>& x );
~Array( ) { delete [ ]elements;} Array<Type> &operator= //数组赋值 ( const Array<Type> & A ); Type &operator[ ]( int i ); //取元素值 int Length()const { return ArraySize; } //取数组长度 void ReSize ( int sz ); //扩充数组 }
一维数组公共操作的实现
template <class Type> void Array<Type> :: getArray ( ) { //私有函数:创建数组存储空间 elements = new Type[ArraySize]; }
template <class Type> Array<Type> :: Array ( int sz ) { ArraySize = sz; getArray ( ); }
template <class Type> Array<Type>::Array(Array<Type> &x){ int n = ArraySize = x.ArraySize; elements = new Type[n]; Type *srcptr = x.elements; Type *destptr = elements; while ( n-- ) * destptr++ = * srcptr++; }
template <class Type> Array<Type>::Array(Array<Type> &x){ int Size = x.ArraySize; elements = new Type[Size]; for(int i=0;i<Size;i++) elements[i]=x.elements[i]; }
template <class Type> Type& Array<Type>::operator[ ](int i){ if ( i < 0 || i > ArraySize-1 ) { cerr << “数组下标超界” << endl; return NULL; } return elements[i]; }
template <class Type> void Array<Type> :: Resize ( int sz ) { if ( sz >= 0 &
& sz != ArraySize ) { Type * newarray = new Type[sz]; int n = ( sz < ArraySize ) ? sz : ArraySize; //按新的大小确定传送元素个数
正在阅读:
【2012四川大学,数据结构与算法设计】第4讲 数组和广义表07-22
展现作文魅力 提升写作素养06-03
工程力学复习资料01-16
重庆市荣昌区2015-2016学年八年级(上)期末物理试卷(解析版)09-08
A3纸双面带左右页码手册的制作打印方法06-01
遥感原理与应用课程上机实验报告 - 图文03-19
我在未来城里欢乐多作文400字06-26
2014届高中化学一轮总复习 第4章 第11讲 富集在海水中的元素 氯03-29
图解汽车灯光调节方法06-01
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 四川大学
- 数据结构
- 数组
- 广义
- 算法
- 设计
- 2012
- 重组人干扰素α-2b阴道泡腾胶囊联合聚甲酚磺醛栓治疗宫颈炎的临床观察
- 2011 中国电子元器件行业十强企业
- 高等数学(下册)期末模拟试卷(八)
- 电机与控制电子教案 6洗衣机电动机及其控制
- 宁波函授本科有哪些专业
- 壶关县司法局多措并举开展《人民调解法》宣传活动
- 小学一年级奥数练习题
- 堆排序求TopK(java)
- 李洪成老师大宗易理论实践应用4
- 2020-2021学年数学高中4人教A版课时作业-1.2.2-同角三角函数的基本关系-含解析-D
- 学校(幼儿园)保安培训方案
- 审议讨论两委工作报告情况汇报
- 2013-2017年中国棉花行业深度调研与投资前景预测报告
- 2014年工作计划汇报
- 基于FANUC+0i-Mate系统数控车床综合实验台的研究与开发
- 垃圾填埋场渗滤液脱氮处理技术的发展趋势
- 工作票管理制度1(已发布)
- 2012年中考生物学业水平模拟测试题1
- 谈如何把握语文综合性学习的教学要求
- 01王凯:城镇化历史-20130114