數據結構(一)

(一)1°從邏輯結構上分:
(1)集合結構:該結構的數據元素間的關係是“屬於同一個集合”。

(2)線性結構:該結構的數據元素之間存在着一對一的關係。
(3)樹型結構:該結構的數據元素之間存在着一對多的關係。

(4)圖形結構:該結構的數據元素之間存在着多對多的關係,也稱網狀結構。
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。
2°從物理結構上分:(1)順序存儲結構(2)鏈式存儲結構
(2)算法:算法是描述解決問題的方法(算法只是爲了幫助大家更好的理解數據結構)
1°算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作
2°算法具有五個基本特性:輸入,輸出,有窮性,確定性和可行性。
輸入:算法可以有0個輸入和多個輸入,比如在打印“hello world”就不要輸入參數
輸出:但是輸出必須有一個輸出或多個輸出,否則要這個算法還有什麼意義。
有窮性:指算法在執行有限的步驟之後,自動結束,而不會出現無限循環,並且每一個步驟在可接受的時間內結束。
確定性:算法的每一個步驟都有確定的含義,不會有二義性。
可行性:顧名思義,就是算法每一步都是可通過執行有限次數完成的。
(3)線性表:零個 或多個數據元素的有限序列
順序表:指的是用一段地址連續的存儲單元一次存儲線性表的數據元素(內存空間連續存儲)
需要三個屬性
1°存儲空間的起始位置:數組data,它的存儲位置就是存儲空間的存儲位置
2°線性表的最大存儲量:數組最大長度MaxSize
3°線性表的當前長度:length
#include 
#define MaxSize 20
typedef int ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int length;
}SqList;
優點:1°無須爲表示表中元素之間的邏輯關係而增加額外的存儲空間
2°可以快速的存取表中任一位置的元素s
缺點:1°插入和刪除操作需要移動大量元素
2°當線性表長度較大時,難以確定存儲空間的容量
3°造成空間的“碎片”
(4)鏈式存儲結構(鏈表)(不連續存儲,通過指針相連接)
把存儲數據元素信息的域稱爲數據域,把存儲直接後繼的域(指向下一個結點)稱爲指針域
指針域中存儲的信息稱作指針和鏈,這倆部分組成數據元素的存儲映像,稱爲結點(Node)
1°單鏈表:n個結點鏈接成一個鏈表,即爲線性表的鏈式存儲結構,因此此鏈表每個結點中之包含一個指針域,所以叫做單鏈表
我們把鏈表中第一個結點的存儲位置叫做頭指針
有時爲了方便,會在單鏈表的第一個結點前附設一個結點,稱爲頭結點


發佈了75 篇原創文章 · 獲贊 45 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章