0数组的逻辑结构 第五章数组和广义表 n(>2)维数组的逻辑结构一 n维数组的逻辑结构的形式定义 n- Array=(D,R) (5-2) 其中 Ji=Ci, ci i=1.2 D=14…n∈D,且c和d均为整数 R=RR R ≤d.1≤k≤n且k≠ R +1 j1≤d1-1 ∈D 说明 1)n维数组的元素个数为nn2…nn=∏n 2)n维数组中每个数据元素都属于n个向量(受n个关系制约) ,除边界上的元素外,均可以有n个前趋和n个后继。 第6页
第五章 数组和广义表 第6页 n(n>2)维数组的逻辑结构 n维数组的逻辑结构的形式定义 (5 2) ( , ) − n − Array = D R − = = = = = − = − + + + a a D c j d c j d k n k i R a a R R R R a D c d j c c d i n n D a n Array D R i n i n i n i n n n j j j j j j i i i k k k i j j j j j j n j j j i i i i i i j j j 1 , , 1 1 2 , 0 1 , 1 1 1 1 1 2 1 2 , 1 ,1 , , , , , , , , , 1,2, ( 0) ( , ) (5 2) 且 且 和 均为整数 其中 说明: 1)n维数组的元素个数为n1·n2· ··· ·nn = ni . 2)n维数组中每个数据元素都属于n个向量(受n个关系制约) ,除边界上的元素外,均可以有n个前趋和n个后继。 ⚫ 数组的逻辑结构
0数组的逻辑结构 第五章数组和广义表 N维数组的递归定义一 K_Aray=(D,R6)(1≤k≤n)(5-3) 其中 (k) k+1 <i,<d n-k+1 D4)=k=时,A(k∈ k>时,A.)是k-1维数组 R()={AR} ≤i1≤ AR=3<A (k) (k) k)(k) 43a+∈D 在这递归定义中,一个k维数组是其数据元素为k-1维数组的线 性表,Cnk+1和dnk是第k维下标的一对界偶。 n维数组是一种较复杂的数据结构,但它可以由简单的数据结 构——线性表辗转合成而得。 第7页
第五章 数组和广义表 第7页 N维数组的递归定义 = = − = = = − + − + − + + − + − + A A D c i d AR A A R AR k A k k A D A c i d D K Array D R k n k i k i n k k n k k i k i k k i k i n k k n k k i k k k k k k k k k k ( ) 1 ( ) 1 1 ( ) 1 ( ) ( ) ( ) 0 ( ) 1 1 ( ) ( ) ( ) ( ) , , 1 , 1 1 , _ ( , )(1 ) (5 3) 时 是 维数组 时 其中 在这递归定义中,一个k维数组是其数据元素为k-1维数组的线 性表,cn-k+1和dn-k+1是第k维下标的一对界偶。 n维数组是一种较复杂的数据结构,但它可以由简单的数据结 构——线性表辗转合成而得。 ⚫ 数组的逻辑结构
0数组的逻辑结构 第五章数组和广义表 数组的操作 个数组中所有的数据元素都必须属于同一数据类型。 对于数组,通常只有两种基本操作: 1)给定一组下标,存取相应的数据元素。 几)给定一组下标,修改相应数据元素中的某一个或 数据项的值 注.对于二维数组的抽象即矩阵,可包含取值、赋值 和初始化等操作。编译程序用线性存储器来实现矩阵。 第8页
第五章 数组和广义表 第8页 数组的操作 一个数组中所有的数据元素都必须属于同一数据类型。 对于数组,通常只有两种基本操作: 1)给定一组下标,存取相应的数据元素。 2)给定一组下标,修改相应数据元素中的某一个或 几个数据项的值。 注. 对于二维数组的抽象即矩阵,可包含取值、赋值 和初始化等操作。编译程序用线性存储器来实现矩阵。 ⚫ 数组的逻辑结构
0数组的版序存猪结构 第五章数组和广义表 数组的顺序存储结构:用一组连续的存储 单元顺序地存放数组中的诸数组元素 数据元素的存放次序问题:解决存储单元 是一维结构,而数组是个多维结构的矛盾 (指多维数组) 二维数组元素间次序的排列方法:行优先 与列优先序 优先序:按以行序为主序进行排列,就 1列 一是把数组元素按行表次序、第计1行的元素紧 跟在第i行元素后面进行存储 第9页
第五章 数组和广义表 第9页 数组的顺序存储结构:用一组连续的存储 单元顺序地存放数组中的诸数组元素。 数据元素的存放次序问题:解决存储单元 是一维结构,而数组是个多维结构的矛盾。 (指多维数组) 二维数组元素间次序的排列方法:行优先 与列优先序。 行优先序:按以行序为主序进行排列,就 是把数组元素按行表次序、第i+1行的元素紧 跟在第i行元素后面进行存储。 (列) (列) (列) (j+1列) (j列) ⚫ 数组的顺序存储结构
0数组的版序存猪结构 第五章数组和广义表 一示例:W是一个3*4的整数数组(起始下标从1开始)。 设二维数组变量w的诸数据组元素值如下表所示 0 82 340 -3 3 5120 以列序为主序的存储方式 以行序为主序的存储方式一 列优先序「0 行优先序 8第1列 5 2第2列 01458 第1行 4 2第2行 0第3列 3 2530 -5 第4列 2}第3行 FORTRAN中采用 C, Pascal,BASC,PL1, COBOL等中采用 下面讨论的是按行为主序规则存储的情形。 第10页
第五章 数组和广义表 第10页 示例: w是一个3*4的整数数组(起始下标从1开始)。 设二维数组变量w的诸数据组元素值如下表所示 1 2 3 4 1 0 -1 4 5 2 8 2 0 -3 3 -5 1 2 0 以列序为主序的存储方式—— 列优先序 以行序为主序的存储方式—— 0 行优先序 8 -5 -1 2 1 4 0 2 5 -3 0 第1列 第2列 第3列 第4列 0 -1 4 5 8 2 0 -3 -5 1 2 0 第1行 第2行 第3行 FORTRAN中采用 C,Pascal, BASIC, PL/1, COBOL等中采用 下面讨论的是按行为主序规则存储的情形。 ⚫ 数组的顺序存储结构