第五章 廣義表
數(shù)組一般沒有插入和刪除操作,另外無論是幾維數(shù)組,在機(jī)器里表示都是一維的,因此這里有一個(gè)按行優(yōu)先存儲(chǔ)還按列優(yōu)先存儲(chǔ)的這樣的一個(gè)法則,要注意這問題。
在數(shù)組里,一般沒有插入和刪除運(yùn)算,所以存好這些數(shù)據(jù),就這樣了,另外在數(shù)組這部分中,可以這樣去理解它,它是一個(gè)復(fù)雜的非線性結(jié)構(gòu),因?yàn)檫@是針對(duì)于線性結(jié)構(gòu)的每一個(gè)結(jié)點(diǎn)最多有一個(gè)直接前趨和最多有一個(gè)直接后繼這樣的特點(diǎn)而言的,因?yàn)閿?shù)組,比如說二維數(shù)組每一個(gè)元素它可以有兩個(gè)直接前趨,分別從行和列看。也可有兩個(gè)直接后繼,但是邊上的和角上的又不同,因此比較復(fù)雜。多維的更復(fù)雜,但是也可以這樣去理解,多維數(shù)組認(rèn)為是向量的推廣。
行優(yōu)先就是最右側(cè)下標(biāo)變化最快,列優(yōu)先就是最左側(cè)下標(biāo)變化最快。壓縮存儲(chǔ)就是對(duì)多個(gè)相同的非零元素只分配一個(gè)存儲(chǔ)空間,對(duì)零元素不分配存儲(chǔ)空間。使用壓縮技術(shù),存儲(chǔ)一個(gè)稀疏矩陣,惟一目的僅僅是為了節(jié)省存儲(chǔ)空間,在時(shí)間上是不合算的。
提醒大家,把順序存儲(chǔ)的位置、安排記住,行優(yōu)先或者列優(yōu)先,把有規(guī)律的特殊矩陣的壓縮存儲(chǔ)的方法記住,然后記住無規(guī)律的稀疏矩陣的三元組表存儲(chǔ)方法,并且要知道,三元組表存儲(chǔ)方法在時(shí)間上是不合算的,只是節(jié)省了空間。
廣義表是把線性表里面每一個(gè)結(jié)點(diǎn)都必須是原子值的這樣一個(gè)限制給突破了的表,就叫廣義表。廣義表也是就是說表中的每一個(gè)元素還可以是表,因此它也是一個(gè)非線性的。不但可以是表,而且可以是其自身。
廣義表的括號(hào)表示和圖形表示之間的轉(zhuǎn)換,希望大家能夠把握,一般來說括號(hào)表示它要用圓括號(hào)把廣義表括起來,以逗號(hào)分隔他的元素,圖形表示是一種形象化的括號(hào)表示。
例如:A是一個(gè)廣義表,大寫字母代表表,小寫字母代表原子。
例如:取表頭運(yùn)算
下面看一個(gè)具體的例子: