數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)元素的集合+數(shù)據(jù)之間的相互關(guān)系
1)邏輯結(jié)構(gòu)
數(shù)據(jù)之間的相互關(guān)系
線性結(jié)構(gòu):線性表、隊列媚值、棧
非線性結(jié)構(gòu):樹狠毯、圖
2)存儲結(jié)構(gòu)(又稱物理結(jié)構(gòu))
元素和元素之間關(guān)系在計算機的存儲形式
線性表
n個元素組成的有限序列。n為線性表的長度褥芒,長度0為空表嚼松。
非空線性表的線性結(jié)構(gòu)有以下特點:
存在唯一一個被稱為“第一個”、“最后一個”的數(shù)據(jù)元素锰扶。
第一個元素? ? ?前驅(qū)? ? 后繼? ? ?最后一個元素
線性表的存儲結(jié)構(gòu)
順序存儲献酗、鏈接存儲
1)順序存儲 通常用一個數(shù)組來實現(xiàn),依次有序存儲少辣。線性表第i個結(jié)點是數(shù)組的第i個結(jié)點凌摄。
2)鏈接存儲:有表頭指針head
一個數(shù)據(jù)元素用結(jié)點存儲。結(jié)點=數(shù)據(jù)域+指針域
數(shù)據(jù)域存放數(shù)據(jù)漓帅,指針域指向直接后繼
代碼編寫時候:插入新結(jié)點锨亏,注意先賦值新結(jié)點的指針域到下一結(jié)點的數(shù)據(jù)域
棧
只允許在同一段插入和刪除操作的線性表
先進后出
允許插入和刪除的一端稱為棧頂,另一端稱為棧底
初始情況下top= -1
隊列
只允許在一端插入元素--隊尾rear
而在另一端刪除元素的線性表-隊頭front
先進先出
循環(huán)隊列
將順序隊列假想成一個環(huán)形忙干,稱為循環(huán)隊列
隊空:rear = front
隊滿:rear =(rear+1)%m
數(shù)組
n維數(shù)組是一種“同構(gòu)”的數(shù)據(jù)結(jié)構(gòu)
同構(gòu):類型相同器予,結(jié)構(gòu)一致
二維數(shù)組
二維數(shù)組的存儲結(jié)構(gòu):
二維數(shù)組地址計算
行存儲:計算loc[i][j]的地址? ?= (n*i+j)*b
n:每行有n個元素
j : i 這一行前面的個數(shù)(j個)
b:? ?i前面每個元素占用的存儲單元
列存儲:同理
稀疏矩陣
非零元素個數(shù)小于 零元素個數(shù)并且分布沒有規(guī)律
稀疏矩陣存儲方式:
1)三元組存儲? (行,列捐迫,元素本身數(shù)據(jù))-->(0乾翔,0,5)? 零行零列 5
2)十字鏈表存儲
矩陣的壓縮存儲其實是將數(shù)組的存儲和稀疏矩陣結(jié)合起來考察
字符串
有限字符序列
空串:不包含任何字符 “”
空格串:由一個或多個空格組成的串
字符串的比較
從第一個字符開始比較,比較ASCII碼反浓,依次比較
越靠后的ASCII碼越大
小寫字母ASCII碼比大寫字母ASCII碼大