資料結構你真的懂了嗎? 陣列和廣義表篇

2021-10-08 00:09:20 字數 1936 閱讀 3268

串(string)是零個或多個字元組成的有限序列。長度為零的串稱為空串(empty string),它不包含任何字元。通常將僅由乙個或多個空格組成的串稱為空白串(blank string) 注意:空串和空白串的不同,例如「 」和「」分別表示長度為1的空白串和長度為0的空串。

串的表示和實現:

1.定長順序儲存表示。靜態儲存分配的順序表。

2.堆分配儲存表示。儲存空間是在程式執行過程中動態分配而得。所以也稱為動態儲存分配的順序表

串的鏈式儲存結構。

3.串匹配:將主串稱為目標串,子串稱之為模式串。蠻力法匹配。kmp演算法匹配。boyer-moore演算法匹配。

陣列和廣義表

陣列和廣義錶可看成是一種特殊的線性表,其特殊在於: 表中的元素本身也是一種線性表。記憶體連續。根據下標在o(1)時間讀/寫任何元素。

二維陣列,多維陣列,廣義表、樹、圖都屬於非線性結構

陣列陣列的順序儲存:行優先順序;列優先順序。陣列中的任一元素可以在相同的時間記憶體取,即順序儲存的陣列是乙個隨機訪問結構。

關聯陣列(associative array),又稱對映(map)、字典( dictionary)是乙個抽象的資料結構,它包含著類似於(鍵,值)的有序對。 不是線性表。

矩陣的壓縮:

對稱矩陣、三角矩陣:直接儲存矩陣的上三角或者下三角元素。注意區分i>=j和i

廣義表廣義表(lists,又稱列表)是線性表的推廣。廣義表是n(n≥0)個元素a1,a2,a3,…,an的有限序列,其中ai或者是原子項,或者是乙個廣義表。若廣義表ls(n>=1)非空,則a1是ls的表頭,其餘元素組成的表(a2,…an)稱為ls的表尾。廣義表的元素可以是廣義表,也可以是原子,廣義表的元素也可以為空。表尾是指除去表頭後剩下的元素組成的表,表頭可以為表或單元素值。所以表尾不可以是單個元素值。

例子:a=()——a是乙個空表,其長度為零。

b=(e)——表b只有乙個原子e,b的長度為1。

c=(a,(b,c,d))——表c的長度為2,兩個元素分別為原子a和子表(b,c,d)。

d=(a,b,c)——表d的長度為3,三個元素都是廣義 表。顯然,將子表的值代入後,則有d=(( ),(e),(a,(b,c,d)))。

e=(a,e)——這是乙個遞迴的表,它的長度為2,e相當於乙個無限的廣義表e=(a,(a,(a,(a,…)))).

三個結論:

1.廣義表的元素可以是子表,而子表的元素還可以是子表。由此,廣義表是乙個多層次的結構,可以用圖形象地表示

2.廣義錶可為其它表所共享。例如在上述例4中,廣義表a,b,c為d的子表,則在d中可以不必列出子表的值,而是通過子表的名稱來引用。

3.廣義表的遞迴性

考點:1.廣義表是0個或多個單因素或子表組成的有限序列,廣義表可以是自身的子表,廣義表的長度n>=0,所以可以為空表。廣義表的同級元素(直屬於同乙個表中的各元素)具有線性關係

2.廣義表的表頭為空,並不代表該廣義表為空表。廣義表()和(())不同。前者是長度為0的空表,對其不能做求表頭和表尾的運算;而後者是長度為l的非空表(只不過該表中惟一的乙個元素是空表),對其可進行分解,得到的表頭和表尾均是空表()

3.已知廣義表ls=((a,b,c),(d,e,f)),運用head和tail函式取出ls中原子e的運算是head(tail(head(tail(ls)))。根據表頭、表尾的定義可知:任何乙個非空廣義表的表頭是表中第乙個元素,它可以是原子,也可以是子表,而其表尾必定是子表。也就是說,廣義表的head操作,取出的元素是什麼,那麼結果就是什麼。但是tail操作取出的元素外必須加乙個表——「()「。tail(ls)=((d,e,f));head(tail(ls))=(d,e,f);tail(head(tail(ls)))=(e,f);head(tail(head(tail(ls))))=e。

4.二維以上的陣列其實是一種特殊的廣義表

5.在(非空)廣義表中:1、表頭head可以是原子或者乙個表 2、表尾tail一定是乙個表 3.廣義表難以用順序儲存結構 4.廣義表可以是乙個多層次的結構

資料結構你學懂了嗎?

開篇就習慣開門見山。你可能會鍊錶 順序表 棧 佇列 串 壓縮矩陣 二叉樹 森林 有向圖 無向圖什麼的。但是除此之外呢?你還知道什麼?好吧,就算你說的這些,你知道這些概念,那你寫個二叉樹我看看?這很可能就是面試官的一句問話。在大學裡面,我們肯定都學過資料結構這門課程,還做了相關的實驗報告,程式設計實現...

資料結構 陣列和廣義表

感覺陣列這一段沒講什麼太多的東西。先是講了下定義,就是每個維度上都有對應的前驅後繼,首尾元素例外。操作只有初始化 銷毀 取元素 修改元素。然後講了下適合用順序儲存結構,多維情況下根據下標 j1 j2 j3 jn 找到對應畫素的儲存位置 cn l,ci 1 bi ci,loc loc基址 ciji l...

資料結構 陣列和廣義表

陣列長度固定,元素型別一致,沒有鏈式映像,因為不能保證位址連續 陣列與線性表的區別與聯絡 相同點 都是相同資料型別的的資料元素組成的有限序列 不同點 陣列要求位址連續,而線性表則無此要求 線性表的元素是邏輯意義上不可再分的,而陣列中每乙個元素還可以是乙個陣列 多維陣列可分 操作上的不同,陣列一旦被定...