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 閱讀(923) 評論(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  回復  更多評論
            

          主站蜘蛛池模板: 普宁市| 海阳市| 临城县| 巴林左旗| 河曲县| 辽阳县| 溧水县| 天峨县| 蕉岭县| 平舆县| 青海省| 长泰县| 白城市| 璧山县| 且末县| 商都县| 达州市| 柳河县| 巴彦县| 康定县| 城步| 山西省| 诸城市| 北票市| 灵石县| 墨玉县| 镇原县| 买车| 郴州市| 凤凰县| 新安县| 海淀区| 登封市| 卓尼县| 青浦区| 渭南市| 龙岩市| 丹巴县| 金平| 林州市| 巧家县|