學習嚴蔚敏數據結構: 第四集

今天是線性表:

 

用一組地址連續的存儲單元依次存放線性表中的數據元素


順序映像的C語言描述


線性表的初始化操作


線性表元素定位操作



該算法的時間複雜度O(ListLength(L))//在0-表長之間變化

線性表元素插入

ListInsert(&L, i, e)的實現

問: 插入元素後, 線性表的邏輯關係發生了什麼變化

線性表的結構發生變化, 長度發生變化




時間複雜度: O(ListLength(L))//最壞的情況和表長一樣, 最好的情況是O

考慮平均的情況:

假設在第i個元素之前插入的概率爲pi, 則在長度爲n的線性表中插入一個元素所需移動元素次數的期望值爲: (一個公式)
若假定在線性表中任何一個位置上進行插入的概率都是相等的, 則移動元素的期望值爲: (又一個公式)

線性表刪除操作

ListDelete(&L, i, &e)的實現:

問: 刪除元素時, 線性表的邏輯結構發生了什麼變化




此算法的時間複雜度: O(ListLength(L))//和表長成正比

考慮平均的情況:

假設刪除第i個元素的概率爲qi, 則在長度爲n的線性表中刪除一個元素所需移動元素次數的期望值爲: (一個公式)
若假定在線性表中任何一個位置上進行刪除的概率是相等的, 則移動元素的期望值是: (一個公式)


2.3 線性表類型的實現 - 鏈式映像
	1. 單鏈表
	   用一組地址任意的存儲單元存放線性表中的數據元素
	   以元素(數據元素的映像) + 指針(指示後繼元素存儲位置的) = 結點(表示數據元素)
	   以"結點的序列"表示線性表 - 稱爲鏈表
	   通常用線性表中第一個數據元素的存儲地址作爲線性表的地址, 稱作線性表的頭指針

	2. 結點和單鏈表的C語言描述


	3. 單鏈表操作的實現
	   線性表的操作GetElem(L, i, &e)在鏈表中的實現:
	   基本操作爲 使指針p始終指向線性表中的第j個數據元素



	   時間複雜度: O(ListLength(L)) // O表長

	   線性表的操作ListInsert_L(&L, i, e)在鏈表中的實現:
	   基本操作爲: 找到線性表中第i-1個結點, 修改其指向後繼的指針



	   時間複雜度: O(ListLength(L))

	   線性表的操作ListDelete_L(&L, i, &e)在鏈表中的實現:
	   基本操作爲: 找到線性表中第i-1個結點, 修改其指向後繼的指針



	   時間複雜度: O(ListLength(L))



這堂課主要講述了線性表的兩種實現形式

大家一看就知道...數組和鏈表, 

具體看筆記把, 沒啥好說的

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