ps畢業要求的小**已經投出去啦,目前的任務就是複習演算法基礎知識準備實習,為了方便回顧內容和分享,我會將相關知識梳理並總結在csdn上~
資料結構的三要素:邏輯結構、物理結構、資料運算。
邏輯結構:(線性結構)線性表、棧、佇列(非線性結構)樹、圖、集合。
物理結構:順序儲存、鏈式儲存、索引儲存、雜湊儲存。
1.順序儲存:把邏輯上相鄰的元素儲存在物理位置上也相鄰的儲存單元裡,元素之間的邏輯關係由儲存單元的鄰接關係體現。
優點:可以實現隨機訪問。
缺點:只能使用相鄰的一整塊儲存單元。
2.鏈式儲存:不要求邏輯上相鄰的元素在物理位置上也相鄰,借助指示元素儲存位址的指標表示元素之間的邏輯關係。
優點:充分利用所有儲存單元。
缺點:每個元素因儲存指標而占用額外的儲存空間,只能實現順序訪問。
3.索引儲存:在儲存元素資訊的同時,建立附加的索引表。索引項的一般形式,(關鍵字,位址)。
優點:檢索速度快。
缺點:附加的索引表占用較多的儲存空間。
4.雜湊儲存:根據元素的關鍵字計算元素的儲存位址。
優點:檢索、增加和刪除結點的操作都很快。
缺點:可能出現元素儲存單元的衝突,而解決衝突會增加時間和空間開銷。
演算法的五個重要特性:有窮性、確定性、可行性、輸入和輸出。
時間複雜度:最深層迴圈內語句的頻度。
空間複雜度:儲存空間、工作單元、輔助空間。
除了第乙個元素外,每個元素有且僅有乙個直接前驅。除了最後乙個元素外,每個元素有且僅有乙個直接後繼。
順序表的特點:表中的元素的邏輯順序與其物理順序相同。(因此插入和刪除需要移動大量元素)
線性表插入、刪除和查詢的平均時間複雜度為o(n)。
elemtype data[maxsize]
;int length;
單鏈表:除了存放元素自身的資訊以外,還需要存放乙個指向其後繼的指標。
elemtype data;
struct lnode *next;
頭結點和頭指標的區別,不管帶不帶頭結點,頭指標始終指向鍊錶的第乙個結點,而頭結點是帶頭結點鍊錶的第乙個結點,結點內通常不儲存資訊。
1.頭插法
linklist creatlist
(linklist $l
)returnl;
}
2.尾插法
linklist creatlist
(linklist $l
) r-
>next=
null
;returnl;
}
雙鏈表僅僅是在單鏈表的結點中增加了乙個指向其前驅的prior指標。插入和刪除結點的時間複雜度均為o(1)。
迴圈單鏈表和單鏈表的區別在於,表中最後乙個結點的指標不是null,而改為指向頭結點。迴圈單鏈表的判空條件不是頭結點的指標是否為空,而是它是否等於頭指標。
迴圈雙鏈表l中,某結點*p為尾結點時,p->next==l;當迴圈雙鏈表為空表時,其頭結點的prior域和next域都等於l。
演算法實習準備之一 資料結構複習(二)
棧 只允許在一端 棧頂 進行插入或刪除操作的線性表。後進先出 順序棧 棧的順序儲存 elemtype data maxsize int top s top 1 棧空條件 s.top maxsize 1 棧滿條件 s.length s.top 1 棧長s data s top x 進棧x s data...
資料結構複習篇之一 資料結構相關知識
1.資料 是資訊的載體,是描述客觀事物屬性的數 字元以及所有能輸入到計算機中被電腦程式識別和處理的符號的集合 2.資料元素 是資料的基本單位,通常作為乙個整體進行考慮和處理。3.資料物件 具有相同性質的資料元素的集合,是資料的乙個子集。4.資料型別 1 原子型別 其值不可再分的資料型別 2 結構型別...
redis 學習之一(資料結構)
儲存物件的兩種方式 儲存序列化之後的物件 jedis.set user liudehua obj getbytes getbytesbyproduct person user liudehua obj getbytes fasdf 不能用這種形式 byte productbytes jedis.ge...