目錄:線性表的定義
線性表的抽象資料型別
順序儲存結構的插入與刪除
線性表的鏈式儲存結構
單鏈表的讀取
單鏈表的插入與刪除
單鏈表的整表建立
單鏈表的整表刪除
單鏈表的結構與順序儲存結構的優缺點
靜態鍊錶
迴圈鍊錶
雙向鍊錶
上述就是我學習的某本教材中關於線性表學習的目錄,這時候我們來找關係:
(1)什麼是線性表?-------線性表的定義
(2)資料型別就是資料型別,比如我們學的int,char都是一種資料型別,那抽象資料型別又是什麼意思呢?---------線性表的抽象資料型別
(3)對一種儲存結構通常進行的操作有插入(往裡面放資料),刪除(剔除不需要或者已用過的資料)。----------插入與刪除
(4)線性表的儲存結構是什麼樣?有哪幾種?------------順序儲存結構與鏈式儲存結構
(5)鏈式儲存結構是否只是單一不變的如同順序儲存結構一樣固定?-------------靜態鍊錶、迴圈鍊錶、雙向鍊錶。
(6)只要是一種儲存結構就應該有對應對其的操作,那不同的儲存結構的操作方式是否相同?---------鍊錶的操作。
問題部分是應該我們對學習乙個未知知識提出的問題?通過目錄其實我們就大致了解了乙個內容如下:線性表是資料結構的一種,既然是一種資料結構就需要我們對他的儲存結構進行一些操作,通過學習發現,線性表這種資料結構又有多種儲存結構。不同的儲存結構我們的操作方法又有些差別。
下面我們依次解決我們提出的問題:
(1)什麼是線性表?
就如同大學裡面進校園時,每個人都有乙個學號,那我們一般從20140001開始算是第乙個,假設乙個班級是40個人,那最後乙個就是20140040。
以20140001來說,他後面是20140002,但是前面沒有了,那麼就說他沒有前驅
以20140040來說,他前面是20140039,但是後面沒有了,那麼就說他沒有後繼
以201400xy(1對於這樣乙個概念來說他就是乙個線性表:零個或多個資料元素的有限序列。
擴充套件一下:
上面所說的學號問題,我們需要點名冊,那麼就按照學號來的,但是學號這關聯的還包括姓名、性別等資訊。但是這一系列都是乙個線性表。
即:複雜的線性表,乙個資料元素可以由若干資料項組成。比如說20140001這個資料元素,它可以包括:姓名、學號、性別等多個資料項。
(2)資料型別就是資料型別,比如我們學的int,char都是一種資料型別,那抽象資料型別又是什麼意思呢?
其實我們處理器中已經存在了很多的資料型別,我們可以利用這些已經存在的資料型別進行「重新的組合」來形成新的結構,同樣用已經實現的操作來組合新的操作。這就是所謂的抽象資料型別。
針對線性表而言,抽象資料型別定義如下:
adt 線性表 (list)
data
operation
initlist(*l):初始化操作,建立乙個空的線性表
listempty(l):若線性表為空,返回ture,否則返回false
clearlist(*l):將線性表清空
getelem(l,i,*e):將線性表中第i個位置的元素返回給e
listdelete(*l,i,*e):刪除表l中第i個位置元素,並用e返回其值
listlength(l):返回l的元素個數
endadt
運用:實現兩個線性表a和b的並集操作。即使得a=a∪b。
分析:假設有a、b兩個集合,就是把存在於集合b中的但不存在a中的資料元素插入a中即可。
實現**:
void union(list *la,list lb)
}
具體實現
3、線性表的儲存結構
線性表有兩種物理結構:順序結構就是其中一種
順序儲存結構:用一段位址連續的儲存單元依次儲存線性表的資料元素。
在c語言中用一維陣列來實現順序儲存結構。
關鍵點:起始位置、最大儲存量
則順序結構**:
#define maxsize 20
typedef int elemtype;
typedef struct
sqlist
資料結構學習筆記3
一.最短路徑問題 1.單源最短路徑 1 迪傑斯特拉演算法 dijkstra 有權圖的單源最短路徑的模版 path陣列初始化為 1,dist陣列初始化為正無窮 void dijkstra vertex s 2 無權圖的單源最短路徑的模版 void unweighted vertex s 2.多源最短路...
資料結構學習筆記
資料結構概述 定義我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢摸個 元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這個相應 的操作也叫演算法 資料結構 個體 個體的關係 演算法 對儲存資料的操作 演算...
資料結構學習筆記
資料結構學習筆記 程式 資料結構 演算法 資料結構 資料 結構 結構的本質是關係 資料之間的關係從不通風層面上分為邏輯關係和物理關係 演算法的設計要依據資料的邏輯關係 演算法的實現要依據資料的物理關係 物理關係是邏輯關係的基礎和載體 演算法實現時需要先依據問題抽象出資料模型,即初步確定待處理資料的邏...