線性表
- 順序表:各個單元的存放地址連續(xù)智蝠,代表有Array
- 鏈表:地址不連續(xù)圃庭,一個單元中存放著相鄰節(jié)點的地址信息
稀疏數(shù)組的概念和使用
- 概念:例如將一個五子棋棋盤保存當(dāng)前棋盤中棋子的信息,用二維數(shù)組保存跪楞,但數(shù)組很大榜晦,棋子數(shù)量很少,就會有很多空的數(shù)組單元,浪費存儲空間。稀疏數(shù)組就是用來保存這種數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)捌年。
- 稀疏數(shù)組是一個多行3列的結(jié)構(gòu)瓢娜,行數(shù)代表原二維數(shù)組中的有效數(shù)據(jù)個數(shù),3列中分別存放有效數(shù)據(jù)原始的(行礼预,列眠砾,值)。第一行保存原數(shù)組的行數(shù)托酸、列數(shù)褒颈、有效數(shù)據(jù)個數(shù)。
- 當(dāng)需要恢復(fù)原數(shù)組時励堡,通過將稀疏數(shù)組的第一行構(gòu)建一個二維表谷丸,再通過將稀疏數(shù)組的其余行中的信息添加在構(gòu)建的二維信息中,就恢復(fù)了应结。(添加一個信息:保存二維數(shù)組在文件中刨疼,可以通過Stringbuilder將數(shù)組 放在字符串中,用一個標(biāo)識分開列和行鹅龄,讀取的時候以標(biāo)識符分割字符串)
隊列
- 隊列和C++中的隊列有相似的地方揩慕,隊列是先進先出的數(shù)據(jù)結(jié)構(gòu),基本結(jié)構(gòu)是一個數(shù)組扮休,通過front 和rear代表隊列的頭和為迎卤,隊列的存取的判斷都通過這兩個標(biāo)識來區(qū)分、修改玷坠。讀的時候蜗搔,判斷是否為空,就判斷front和rear是否相等侨糟。存的時候先判斷是否滿碍扔,就判斷rear是否等于隊列的長度減一。
- 其中又有環(huán)形隊列秕重,環(huán)形隊列中的判斷和普通隊列不同不同,標(biāo)識的符號位置也不同,front指向第一個元素溶耘,rear指向最后一個元素的后一位二拐。判斷為空的方法為(front+1==rear);判斷隊列滿的方法是(rear+MaxSize-front)%MaxSize==MaxSize);
- 后移的方法為((front+1%)maxSize).
鏈表
- 是由節(jié)點組成的數(shù)據(jù)結(jié)構(gòu)
- 一個節(jié)點存放有效數(shù)據(jù)和下一個節(jié)點的存儲地址(引用)
- 存儲的地址不連續(xù)
- 帶頭結(jié)點的鏈表和不帶頭結(jié)點的鏈表
- 鏈表的創(chuàng)建和增刪改查
創(chuàng)建一個節(jié)點類凳兵,包含幾個節(jié)點數(shù)據(jù)和下一個節(jié)點類(next)百新。再創(chuàng)建一個鏈表管理類,管理類中庐扫,包含床架鏈表頭結(jié)點和鏈表的各種增刪改查操作函數(shù)饭望。 - add方法
在管理類的對象中仗哨,從head節(jié)點開始,查找next為空的節(jié)點铅辞,并將新建的節(jié)點賦值給next厌漂,添加完成。 - 顯示鏈表
遍歷鏈表斟珊,先判斷是否為空(head.next=null)苇倡,則直接退出,不為空囤踩,創(chuàng)建一個輔助變量nodetemp指向head.next節(jié)點旨椒,并輸出。while(TRUE)進行循環(huán)堵漱,將 nodetemp指向下一個節(jié)點综慎,再判斷是否為空。為空則退出怔锌。