更新時間:2020-12-23 17:35:42 來源:動力節(jié)點(diǎn) 瀏覽5728次
數(shù)據(jù)結(jié)構(gòu)是計算機(jī)存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,它研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)以及它們之間的相互關(guān)系,并對這種結(jié)構(gòu)定義相適應(yīng)的運(yùn)算,設(shè)計出相應(yīng)的算法,并確保經(jīng)過這些運(yùn)算以后所得到的新結(jié)構(gòu)仍保持原來的結(jié)構(gòu)類型。數(shù)據(jù)結(jié)構(gòu)有很多種,一般來說,8種常用數(shù)據(jù)結(jié)構(gòu)分別為:數(shù)組,棧,鏈表,隊列,樹,圖,堆,散列表等,如圖所示:
下面詳細(xì)的介紹一下8個常用數(shù)據(jù)結(jié)構(gòu)。
1.數(shù)組(Array)
數(shù)組是一種聚合數(shù)據(jù)類型,它是將具有相同類型的若干變量有序地組織在一起的集合。數(shù)組可以說是最基本的數(shù)據(jù)結(jié)構(gòu),在各種編程語言中都有對應(yīng)。一個數(shù)組可以分解為多個數(shù)組元素,按照數(shù)據(jù)元素的類型,數(shù)組可以分為整型數(shù)組、字符型數(shù)組、浮點(diǎn)型數(shù)組、指針數(shù)組和結(jié)構(gòu)數(shù)組等。數(shù)組還可以有一維、二維以及多維等表現(xiàn)形式。
2.棧( Stack)
棧是一種特殊的線性表,它只能在一個表的一個固定端進(jìn)行數(shù)據(jù)結(jié)點(diǎn)的插入和刪除操作。棧按照后進(jìn)先出的原則來存儲數(shù)據(jù),也就是說,先插入的數(shù)據(jù)將被壓入棧底,最后插入的數(shù)據(jù)在棧頂,讀出數(shù)據(jù)時,從棧頂開始逐個讀出。棧在匯編語言程序中,經(jīng)常用于重要數(shù)據(jù)的現(xiàn)場保護(hù)。棧中沒有數(shù)據(jù)時,稱為空棧。
3.隊列(Queue)
隊列和棧類似,也是一種特殊的線性表。和棧不同的是,隊列只允許在表的一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作。一般來說,進(jìn)行插入操作的一端稱為隊尾,進(jìn)行刪除操作的一端稱為隊頭。隊列中沒有元素時,稱為空隊列。
4.鏈表( Linked List)
鏈表是一種數(shù)據(jù)元素按照鏈?zhǔn)酱鎯Y(jié)構(gòu)進(jìn)行存儲的數(shù)據(jù)結(jié)構(gòu),這種存儲結(jié)構(gòu)具有在物理上存在非連續(xù)的特點(diǎn)。鏈表由一系列數(shù)據(jù)結(jié)點(diǎn)構(gòu)成,每個數(shù)據(jù)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域兩部分。其中,指針域保存了數(shù)據(jù)結(jié)構(gòu)中下一個元素存放的地址。鏈表結(jié)構(gòu)中數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序來實(shí)現(xiàn)的。
5.樹( Tree)
樹是典型的非線性結(jié)構(gòu),它是包括,2個結(jié)點(diǎn)的有窮集合K。在樹結(jié)構(gòu)中,有且僅有一個根結(jié)點(diǎn),該結(jié)點(diǎn)沒有前驅(qū)結(jié)點(diǎn)。在樹結(jié)構(gòu)中的其他結(jié)點(diǎn)都有且僅有一個前驅(qū)結(jié)點(diǎn),而且可以有兩個后繼結(jié)點(diǎn),m≥0。
6.圖(Graph)
圖是另一種非線性數(shù)據(jù)結(jié)構(gòu)。在圖結(jié)構(gòu)中,數(shù)據(jù)結(jié)點(diǎn)一般稱為頂點(diǎn),而邊是頂點(diǎn)的有序偶對。如果兩個頂點(diǎn)之間存在一條邊,那么就表示這兩個頂點(diǎn)具有相鄰關(guān)系。
7.堆(Heap)
堆是一種特殊的樹形數(shù)據(jù)結(jié)構(gòu),一般討論的堆都是二叉堆。堆的特點(diǎn)是根結(jié)點(diǎn)的值是所有結(jié)點(diǎn)中最小的或者最大的,并且根結(jié)點(diǎn)的兩個子樹也是一個堆結(jié)構(gòu)。
8.散列表(Hash)
散列表源自于散列函數(shù)(Hash function),其思想是如果在結(jié)構(gòu)中存在關(guān)鍵字和T相等的記錄,那么必定在F(T)的存儲位置可以找到該記錄,這樣就可以不用進(jìn)行比較操作而直接取得所查記錄。
當(dāng)然,數(shù)據(jù)結(jié)構(gòu)本身也不是一成不變的,隨著計算機(jī)科學(xué)的飛速發(fā)展,數(shù)據(jù)結(jié)構(gòu)也隨之發(fā)展,衍生出了新的數(shù)據(jù)結(jié)構(gòu)。但是,我們只要掌握了數(shù)據(jù)結(jié)構(gòu)本身的規(guī)律,萬變不離其宗,數(shù)據(jù)結(jié)構(gòu)也會成為我們解決問題的利刃。在本站的數(shù)據(jù)結(jié)構(gòu)和算法教程中,對這8種常見數(shù)據(jù)結(jié)構(gòu)都有詳細(xì)的講解,想深入學(xué)習(xí)的小伙伴千萬不要錯過哦。
初級 202925
初級 203221
初級 202629
初級 203743