The NoteBook of EricKong

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks
 多维数组和广义表是一种复杂的非线性结构,它们的逻辑特征是:一个数据元素可能有多个直接前驱和多个直接后继。

多维数组

1、数组(向量)——常用数据类型

     一维数组(向量)是存储于计算机的连续存储空间中的多个具有统一类型的数据元素。
     同一数组的不同元素通过不同的下标标识。
       (a1,a2,…,an)

2、二维数组
     二维数组Amn可视为由m个行向量组成的向量,或由n个列向量组成的向量。
     
     二维数组中的每个元素aij既属于第i行的行向量,又属于第j列的列向量。

3、多维数组
     三维数组Amnp可视为以二维数组为数据元素的向量。四维数组可视为以三维数组为数据元素的向量……
     三维数组中的每个元素aijk都属于三个向量。四维数组中的每个元素都属于四个向量……

4、数组的顺序存储方式
     由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。
     数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。一般采用顺序存储方法表示数组。
(1)行优先顺序
     将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。
  【例】二维数组Amn的按行优先存储的线性序列为:
    a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn

  注意:
     ①PASCAL和C语言中,数组按行优先顺序存储。
     ②行优先顺序推广到多维数组,可规定为先排最右的下标。

(2)列优先顺序
     将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。
  【例】二维数组Amn的按列优先存储的线性序列为:
    a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn

  注意:
     
①FORTRAN语言中,数组按列优先顺序存储。
     ②列优先顺序推广到多维数组,可规定为先排最左的下标。

5、数组元素的地址计算公式
(1)按行优先顺序存储的二维数组Amn地址计算公式
        LOC(aij)=LOC(a11)+[(i-1)×n+j-1]×d
    其中:
  ①LOC(a11)是开始结点的存放地址(即基地址)
  ②d为每个元素所占的存储单元数
  ③由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。即顺序存储的数组是随机存取结构。

(2)按列优先顺序存储的二维数组Amn地址计算公式
          LOC(aij)=LOC(a11)+[(j-1)×m+i-1]×d

(3)按行优先顺序存储的三维数组Amnp地址计算公式
      LOC(aijk)=LOC(a111)+[(i-1)×n×p+(j-1)×p+k-1]×d

(4)下界不为1的二维数组的地址计算公式

  ①二维数组A[c1..d1,c2..d2]的地址计算公式:
      LOC(aij)=LOC(ac1c2)+[(i-c1)×(d2-c2+1)+j-c2]×d
  ②下界为0的二维数组的地址计算公式(C语言中使用)
      LOC(aij)=LOC(a00)+[i×(d2+1)+j]×d
   注意:
     以下讨论的数组存储结构都以C语言下标表示。
posted on 2012-05-21 17:07 Eric_jiang 阅读(893) 评论(4)  编辑  收藏 所属分类: C/C++

Feedback

# re: 多维数组和广义表 2012-05-21 17:10 Eric_jiang
http://student.zjzk.cn/course_ware/data_structure/web/wenjian/wenjian10.1.1.1.htm  回复  更多评论
  

# re: 多维数组和广义表 2012-05-22 20:39 桑巴葡语翻译公司
排序
....\冒泡排序.txt
....\堆排序.txt
....\希尔排序.txt
....\快速排序.txt
....\直接插入排序.txt
....\直接选择排序.txt
....\考试.txt
....\考试1.txt
查找
....\折半查找.c.txt
....\自己做的查找算法.txt
....\顺序查找.c.txt
栈、队列基本操作练习
....................\二叉树建立.txt
....................\栈的操作.txt
....................\队列的操作.txt
递归
....\字符倒序输出.txt
链表基本操作练习
................\单个节点的后插操作.txt
................\双向循环链表的建立与插入删除操作.txt
................\头插法建立链表.txt
................\尾插法建立但链表1.txt
................\尾插法建立链表.txt  回复  更多评论
  

# re: 多维数组和广义表 2012-05-23 14:59 广州翻译员
http://blog.csdn.net/v_july_v/article/details/7577684  回复  更多评论
  

# re: 多维数组和广义表 2012-05-29 22:40 Eric_jiang
http://www.jpk.pku.edu.cn/pkujpk/course/sjjg/zhinan/video.htm  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: