算法与数据结构1800题 之线性表 (一)
生活随笔
收集整理的這篇文章主要介紹了
算法与数据结构1800题 之线性表 (一)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
線性表是又窮序列,由0或者多個(gè)元素組成,長度為零的稱為空表 線性表的順序存儲結(jié)構(gòu):數(shù)組
線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu):鏈表
數(shù)組可以實(shí)現(xiàn)隨機(jī)訪問,和隨機(jī)存儲,簡稱隨機(jī)存取的存儲結(jié)構(gòu)
鏈表必須按照順序從頭節(jié)點(diǎn)開始尋找,簡稱順序存取的存儲結(jié)構(gòu)
索引存取的存儲結(jié)構(gòu):Map,節(jié)點(diǎn)維護(hù)一個(gè)索引表,按照索引來進(jìn)行存取
線性表是邏輯結(jié)構(gòu),而數(shù)組和鏈表是線性表的兩種實(shí)現(xiàn),是存儲結(jié)構(gòu)(具體實(shí)現(xiàn))
ABD
二叉樹的順序存儲結(jié)構(gòu):將二叉樹當(dāng)做一個(gè)完全二叉樹,或者滿二叉樹,按照層次遍歷的方式將二叉樹存儲在數(shù)組中,對于二叉樹中的空節(jié)點(diǎn),使用某種空標(biāo)志來替代,浪費(fèi)大量空間
邏輯上相鄰的,物理存儲不一定相鄰
棧和隊(duì)列就具有查找操作
D選項(xiàng)有問題 O(1)是指常數(shù)時(shí)間
單鏈表,單向循環(huán)鏈表,雙向鏈表,都是O(n) 線性表是具有相同數(shù)據(jù)類型的n個(gè)數(shù)據(jù)元素構(gòu)成的有限序列
數(shù)據(jù)項(xiàng)構(gòu)成了數(shù)據(jù)元素
頭結(jié)點(diǎn),就是為了操作上的方便,也就是方便運(yùn)算的實(shí)現(xiàn),不是為了表明表節(jié)點(diǎn)中首節(jié)點(diǎn)的位置(使用頭指針也可以表明) 鏈表,如果需要在最后插入和刪除的話, 需要 從頭結(jié)點(diǎn),一直順序找到尾節(jié)點(diǎn) D
循環(huán)單鏈表的最后一個(gè)元素的指針指向頭結(jié)點(diǎn),如果循環(huán)單鏈表只設(shè)頭指針,那么如果需要找到尾節(jié)點(diǎn)進(jìn)行操作,需要遍歷整個(gè)鏈表
循環(huán)鏈表的尾指針,只要next一下,就是頭結(jié)點(diǎn),所以,如果只是對最后一個(gè)元素和第一個(gè)元素進(jìn)行操作,可以使用僅有頭指針的單循環(huán)鏈表,這樣,如果對最后一個(gè)元素進(jìn)行操作(刪除),只需要直接使用尾指針進(jìn)行操作,而如果需要對頭指針進(jìn)行操作(插入),僅僅需要將尾指針next一線即可
如果使用帶尾指針的單循環(huán)鏈表,在刪除尾節(jié)點(diǎn)的時(shí)候,需要遍歷整個(gè)線性表,找到尾節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),而是使用帶有頭結(jié)點(diǎn)的雙循環(huán)鏈表,可以使得頭結(jié)點(diǎn)直接退一步會這兩個(gè)節(jié)點(diǎn),找到對應(yīng)的節(jié)點(diǎn) D ,同上 B,存儲結(jié)構(gòu)能反映數(shù)據(jù)之間的邏輯關(guān)系,應(yīng)該用鏈表,而不是線性表 A,線性表可以實(shí)現(xiàn)隨機(jī)讀取,所以讀取時(shí)間最少 D 指針
鏈表中的指針不是指向數(shù)據(jù)元素的,而是指向包裝了數(shù)據(jù)元素和指針的節(jié)點(diǎn)的,所以,屬于之間的關(guān)系是通過指針來實(shí)現(xiàn)的,而不是通過指示數(shù)據(jù)元素的指針來實(shí)現(xiàn)的 C
靜態(tài)鏈表是借助數(shù)組來描述線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),結(jié)點(diǎn)也有數(shù)據(jù)域和指針域,與鏈表中的指針不同的是,這里的指針是節(jié)點(diǎn)的相對地址(數(shù)組下標(biāo),也成為游標(biāo)),靜態(tài)鏈表在使用前也需要分配一塊連續(xù)的內(nèi)存空間
適用于不支持指針的語言中 B A B C,靜態(tài)鏈表需要提前分配空間,如果只有少量的數(shù)據(jù),則會有浪費(fèi)的存儲空間 C 好題 由于1<= i <= n+1,所以,概率為(1/(n+1)), 平均移動次數(shù)為:
(1/(n+1)) * (n(n+1)/2) == n/2
A C C D D 以下是帶有頭結(jié)點(diǎn)的循環(huán)單鏈表,Header指向頭結(jié)點(diǎn),線性表的長度,指的是不算頭結(jié)點(diǎn)的長度
單鏈表默認(rèn)為只有頭指針,那么需要將長度為m的鏈表的頭指針,移動到鏈表的尾部,也就是需要O(m)的時(shí)間復(fù)雜度 D
線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu):鏈表
數(shù)組可以實(shí)現(xiàn)隨機(jī)訪問,和隨機(jī)存儲,簡稱隨機(jī)存取的存儲結(jié)構(gòu)
鏈表必須按照順序從頭節(jié)點(diǎn)開始尋找,簡稱順序存取的存儲結(jié)構(gòu)
索引存取的存儲結(jié)構(gòu):Map,節(jié)點(diǎn)維護(hù)一個(gè)索引表,按照索引來進(jìn)行存取
線性表是邏輯結(jié)構(gòu),而數(shù)組和鏈表是線性表的兩種實(shí)現(xiàn),是存儲結(jié)構(gòu)(具體實(shí)現(xiàn))
ABD
二叉樹的順序存儲結(jié)構(gòu):將二叉樹當(dāng)做一個(gè)完全二叉樹,或者滿二叉樹,按照層次遍歷的方式將二叉樹存儲在數(shù)組中,對于二叉樹中的空節(jié)點(diǎn),使用某種空標(biāo)志來替代,浪費(fèi)大量空間
邏輯上相鄰的,物理存儲不一定相鄰
棧和隊(duì)列就具有查找操作
D選項(xiàng)有問題 O(1)是指常數(shù)時(shí)間
單鏈表,單向循環(huán)鏈表,雙向鏈表,都是O(n) 線性表是具有相同數(shù)據(jù)類型的n個(gè)數(shù)據(jù)元素構(gòu)成的有限序列
數(shù)據(jù)項(xiàng)構(gòu)成了數(shù)據(jù)元素
頭結(jié)點(diǎn),就是為了操作上的方便,也就是方便運(yùn)算的實(shí)現(xiàn),不是為了表明表節(jié)點(diǎn)中首節(jié)點(diǎn)的位置(使用頭指針也可以表明) 鏈表,如果需要在最后插入和刪除的話, 需要 從頭結(jié)點(diǎn),一直順序找到尾節(jié)點(diǎn) D
循環(huán)單鏈表的最后一個(gè)元素的指針指向頭結(jié)點(diǎn),如果循環(huán)單鏈表只設(shè)頭指針,那么如果需要找到尾節(jié)點(diǎn)進(jìn)行操作,需要遍歷整個(gè)鏈表
循環(huán)鏈表的尾指針,只要next一下,就是頭結(jié)點(diǎn),所以,如果只是對最后一個(gè)元素和第一個(gè)元素進(jìn)行操作,可以使用僅有頭指針的單循環(huán)鏈表,這樣,如果對最后一個(gè)元素進(jìn)行操作(刪除),只需要直接使用尾指針進(jìn)行操作,而如果需要對頭指針進(jìn)行操作(插入),僅僅需要將尾指針next一線即可
如果使用帶尾指針的單循環(huán)鏈表,在刪除尾節(jié)點(diǎn)的時(shí)候,需要遍歷整個(gè)線性表,找到尾節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),而是使用帶有頭結(jié)點(diǎn)的雙循環(huán)鏈表,可以使得頭結(jié)點(diǎn)直接退一步會這兩個(gè)節(jié)點(diǎn),找到對應(yīng)的節(jié)點(diǎn) D ,同上 B,存儲結(jié)構(gòu)能反映數(shù)據(jù)之間的邏輯關(guān)系,應(yīng)該用鏈表,而不是線性表 A,線性表可以實(shí)現(xiàn)隨機(jī)讀取,所以讀取時(shí)間最少 D 指針
鏈表中的指針不是指向數(shù)據(jù)元素的,而是指向包裝了數(shù)據(jù)元素和指針的節(jié)點(diǎn)的,所以,屬于之間的關(guān)系是通過指針來實(shí)現(xiàn)的,而不是通過指示數(shù)據(jù)元素的指針來實(shí)現(xiàn)的 C
靜態(tài)鏈表是借助數(shù)組來描述線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),結(jié)點(diǎn)也有數(shù)據(jù)域和指針域,與鏈表中的指針不同的是,這里的指針是節(jié)點(diǎn)的相對地址(數(shù)組下標(biāo),也成為游標(biāo)),靜態(tài)鏈表在使用前也需要分配一塊連續(xù)的內(nèi)存空間
適用于不支持指針的語言中 B A B C,靜態(tài)鏈表需要提前分配空間,如果只有少量的數(shù)據(jù),則會有浪費(fèi)的存儲空間 C 好題 由于1<= i <= n+1,所以,概率為(1/(n+1)), 平均移動次數(shù)為:
(1/(n+1)) * (n(n+1)/2) == n/2
A C C D D 以下是帶有頭結(jié)點(diǎn)的循環(huán)單鏈表,Header指向頭結(jié)點(diǎn),線性表的長度,指的是不算頭結(jié)點(diǎn)的長度
1,不含任何元素,只有一個(gè)頭結(jié)點(diǎn),則head->next->next->next還是head
2,含有兩個(gè)元素
單鏈表默認(rèn)為只有頭指針,那么需要將長度為m的鏈表的頭指針,移動到鏈表的尾部,也就是需要O(m)的時(shí)間復(fù)雜度 D
轉(zhuǎn)載于:https://juejin.im/post/5b67b57f6fb9a04fb8776e64
總結(jié)
以上是生活随笔為你收集整理的算法与数据结构1800题 之线性表 (一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。