参考书 第二章 Caché 算法与数据结构 数组原理_yaoxin521123的博客-CSDN博客
本人Cache'小白,欢迎指教和交流。本文为学习原作者的代码进行代码重现后的总结精炼。使用数据库:InterSystems IRIS。
示例:构建数组类并调用。
首先,构建数组类(仅展现代码结构)
Class PHA.TYX.Arithmetic.Array Extends %RegisteredObject
{
Property array [ InitialExpression = {[]} ];
Property size [ InitialExpression = 0 ];
Property length [ InitialExpression = 0 ];
Method init (capacity As %Integer) {} //初始化数组
Method insert(index As %Integer,element As %Integer) {} //插入数据
Method get(capacity As %Integer) {} //获取数组下标的值
Method set(index As %Integer,element As %Integer) {} //给数组下标赋值
Method length() {}
Method output() {}
Method delete(index As %Integer) As %Integer {}
Method resize() {} //给数组扩容
}
然后,写调用数组的类
/// Function:调用数组类。第二章:数组原理
/// CreateDate:2022-8-24
/// Creator:tangyingxuan
/// Other: w ##class(PHA.TYX.Arithmetic).Array()
ClassMethod Array()
{
//s $zt = "ErrArray"// 注释原因:可能因为我是本地数据库,配置不对,代码运行到这报错
s array = ##class(PHA.TYX.Arithmetic.Array).%New()
d array.init(10) // 数组下标范围为 0~9
d array.insert(0,3)
d array.insert(1,7)
d array.insert(2,9)
d array.insert(3,5)
d array.insert(1,6)
d array.insert(5,8)
d array.insert(0,4)
d array.insert(7,411)
d array.insert(8,222)
d array.insert(9,111)
d array.insert(10,1343) // 插入不成功。超出数组下标范围
d array.insert(11,23) // 插入不成功。超出数组下标范围
//d array.delete(1) // 删除掉1号节点后,后面的数据会向前补上
//d array.delete(1)
//d array.delete(5)
d array.output()
q ""
//ErrArray
//q $ze
}
运行结果
USER>w ##class(PHA.TYX.Arithmetic).Array()
4
3
6
7
9
5
8
411
222
111
观察运行结果发现,以下两个插入的数据未能成功插入。原因:超出数据定义的范围。
d array.insert(10,1343)
d array.insert(11,23)
释放调用类中delete注释后再运行。
观察可知,删除的数据为3,6,411。
USER>w ##class(PHA.TYX.Arithmetic).Array()
4
7
9
5
8
222
111
原数组为(长度为10) : 4 3 6 7 9 5 8 411 222 111
d array.delete(1) 对应删除的是 d array.insert(0,3) 数组变为4 6 7 9 5 8 411 222 111
d array.delete(1) 对应删除的是 d array.insert(1,6) 数组变为4 7 9 5 8 411 222 111d array.delete(5) 对应删除的是 d array.insert(7,411) 数组变为4 7 9 5 8 222 111
【???】为什么数组的存储的顺序为 4 3 6 7 9 5 8 411 222 111(不懂...
求大佬解答。。。