## 筆記【資料結構】第二章 線性表(一)
1.線性表的邏輯結構
線性表:是零個或多個具有相同型別的資料元素的有限序列。
資料元素的個數定義為線性表的 長度 。長度等於零時稱為空表,乙個非空表通常記為
l = ( a
1 , a 2 ,……, a n )
其中, a i ( 1 ≤ i ≤ n )稱為資料元素,
2. 線性表的順序儲存結構-順序表
作用:線性表中在邏輯結構上相鄰的資料元素儲存在相鄰的物理儲存單元中,即通過資料元素物理儲存的相鄰關係來反映資料元素之間邏輯上的相鄰關係。
順序儲存的實現:一維陣列儲存順序表中的資料.
順序表支援元素的隨機訪問
loc ( ai ) = loc ( a 1 ) + ( i - 1 ) × c
順序表的實現
const int maxsize=100;
template class seqlist // 析構函式為空
int length ( ) // 求線性表的長度
t get ( int i ); // 按位查詢,取線性表的第 i 個元素
int locate ( t x ) ; // 按值查詢,求線性表中值為x 的元素序號
t delete ( int i ) ; // 刪除線性表的第i 個元素
void printlist ( ) ; // 遍歷線性表,按序號依次輸出各元素
};
3.建構函式定義了兩個建構函式:
無參建構函式(構造乙個空的順序表)
seqlist( )
構造乙個非空的順序表
seqlist( t a[ ], int n ) ; // 有參建構函式
有參建構函式的實現:
將長度為n的一維陣列中的元素依次傳入到data中。
template seqlist:: seqlist(t a, int n)
5.順序表的刪除操作1 如果順序表已空,丟擲下溢異常
2 如果元素刪除位置不存在,丟擲位置異常
3 取出被刪除的元素
4 將下標為i,i+1…n-1的元素一次移到i-1,i,…n-2的位置
5 將順序表的長度減1,返回被刪除的元素
template t seqlist::delete(int i)
按值查詢
template int seqlist::locate(t x){
for (int i=0; i如果順序表的第乙個元素恰好就是 x ,演算法只要比較一次就行了,這是最好情況;
如果順序表的最後乙個元素是 x ,演算法就要比較 n 個元素,這是最壞情況;
平均情況下,假設資料是等概率分布,則平均要比較 n /2 個元素。所以,按值查詢演算法的平均時間效能是 o ( n ) 。
線性表順序表示的優點是:
(1) 無需為表示結點間的邏輯關係而增加額外的儲存空間(因為邏輯上相鄰的元素其儲存的物理位置也是相鄰的);
(2) 可方便地隨機訪問表中的任一元素。
線性表順序表示的缺點:
(1)插入或刪除運算不方便,
除表尾的位置外,在表的其它位置上進行插入或刪除操作都必須移動大量的結點,其效率較低;
(2) 由於順序表要求占用連續的儲存空間,儲存分配只能預先進行靜態分配,因此當表長變化較大時,難以確定合適的儲存規模。
7.線性表的鏈式儲存結構及實現
鏈式儲存分配的特點:
根據線性表的長度動態的申請儲存空間,以解決順序儲存中存在的儲存空間難以確定的問題。
鏈式儲存結構的實現:
單鏈表,雙向鍊錶, 迴圈鍊錶等
指標變數的特點
左值指變數的記憶體位址
**右值:**值
在賦值表示式中,賦值號左邊需要左值,右邊需要右值;如a=a+100
指標變數的右值本身又是乙個左值。
資料結構 第二章 線性表
線性表 是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。線性表的特點 線性表的九種基本操作 initlist l 初始化表。構造乙個空的線性表。destroylist l 銷毀操作。銷毀線性表,並釋放線性表l所占用的記憶體空間。locateelem l,e 按值查...
資料結構 第二章 線性表
線性表 順序儲存 鏈式儲存 順序表單鍊錶 雙鏈表迴圈鍊錶 靜態鍊錶 陣列指標實現 借助陣列實現 定義 線性表是具有相同資料型別的n n 0 個資料元素的有限序列,其中n為表長,當n 0時該線性表是乙個空表。特點 1 個數有限 2 表中元素具有邏輯上的順序性。3 表中元素都是資料元素,每個元素都是單個...
資料結構 第二章 線性表
資料結構 第二章 線性表 模板 引數化的多型 引數化多型性 講程式所處理的物件型別引數化,使一段 可用於處理多種不同型別的物件 採用模板程式設計 提供 共享機制 邏輯功能相同,資料型別不同 定義格式 template 尖括號內又稱模板形參表 返回值型別 函式名 參數列 如果變數被引數化,則返回值型別...