1. 程式人生 > >數據結構與算法基礎 模塊一

數據結構與算法基礎 模塊一

歸納 事先 刪除 結構 又是 align 列存儲 二叉 有關

在軟件水平考試中,數據結構與算法基礎的相關內容是考試上午進行的,那麽,接下來將對有關數據結構的內容進行整理和歸納,以便於在整個的軟考準備階段能夠更加清楚和有效率的進行學習和回憶。

以下均為個人針對於數據結構的相關內容的整理,後期根據深入的程度不斷地完善和改進,如果有什麽錯誤或者不足,希望可以提出來,一起進步。

常用的數據結構:

數組(靜態數組,動態數組),線性表,鏈表(單向鏈表,雙向鏈表,循環鏈表),隊列,棧,樹(平衡數,二叉樹,查找樹,堆,線索樹),圖等的定義,存儲和操作,HASH(存儲地址計算,沖突處理)

常用的算法:

  • 排序,查找,數值計算方法,字符串處理方法,初級壓縮算法,遞歸,圖的相關計算
  • 算法與數據結構的關系,算法效率,算法設計,算法描述(流程圖,偽代碼,決策表),算法的復

那麽,我們在明確基本的數據結構和常用算法之後,就得知道在整個的軟考中級數據庫中,這部分的分值其實所占比例不是很大,而且對於代碼掌握的要求也不是很高,但是必須在整個的學習當中,我們還是必須要明白他們之間的關系,這樣才有利於我們在後期的學習和考試中,有一個夯實的基礎。

我們來看一下,在本階段中的考點:

1.線性表

2.二叉樹

3.圖

4.排序算法

5.Hash (散列算法)

6.查找算法

我們在主要的學習當中需要著重註意以上的幾點,但在這六種考點中,最需要註意1.線性表,5.Hash和6.查找算法的使用與掌握。那麽,在明確相關的考點和需要註意的問題之後,我們來看一下有關數據結構的內容。

數據結構可以分為兩大類:

按邏輯分類:

1. 集合(無邏輯關系)

2. 線性結構(線性表):① 一維數組 ②隊列 ③棧

3.非線性結構:①樹 ②圖 ③多維數組

按存儲結構分類:

1.順序存儲結構

2. 鏈式存儲結構

3.索引存儲結構

4.散列存儲結構

接下來將根據以上進行歸類學習:

一、線性表 (順序表,鏈表)

1.順序表(連續不間斷)

2.鏈表(離散單獨的):又分為 單鏈表,循環鏈表,雙鏈表。

單鏈表(只單一方向的移動,沒有後繼節點,最後一個指針域為NULL)

循環鏈表(與單鏈表相似,但有後繼節點,指針域不為空且結點指向頭節點)

雙鏈表(可以朝兩個方向的移動,有兩個指針域):雙鏈表靈活度和開支都大於單鏈表

那麽明確鏈表的基礎知識後,需要明白相關鏈表的操作:

1.單鏈表結點的刪除 :

2.單鏈表結點的插入

3.雙鏈表結點的刪除

4.雙鏈表結點的插入

註: 在單鏈表和雙鏈表結點做刪除處理的時候,其操作方法一樣,均為前一結點的指針域直接指向被刪結點的後繼/但是在做插入操作的時候,需要註意並不是前驅結點的指針域直接指向後繼節點就行,二者的方法有些不同。

已經把順序表和鏈表進行了簡單說明,那麽兩者間的優劣又是如何,接下來就要將順序表和鏈表進行比較

性能類別 具體項目 順序存儲 鏈式存儲
空間性能 存儲密度 =1 更優 <1
容量分配 事先確定 動態改變 更優
時間性能 查找運算 O(n\2) O(n\2)
讀運算 O(1) 更優 O(【n+1】)/2) 最好情況為1 最壞情況為n
插入運算

O(n/2)最好情況為0 最壞情況為n

O(1) 更優
刪除運算 P(【n-1】/2) O(1) 更優

這個表可以明顯的看出兩者在空間性能和時間性能上面的區別,各有各的優點,各也由各的缺點。

數據結構與算法基礎 模塊一