1. 程式人生 > >數據結構(嚴蔚敏、吳偉民)——讀書筆記-2、 線性表及其基本運算、順序存儲結構

數據結構(嚴蔚敏、吳偉民)——讀書筆記-2、 線性表及其基本運算、順序存儲結構

content pri 線性 時間復雜度 length 將他 ron 個數 p s

第二章 線性表

2.1 線性表及其基本運算


2.2 線性表的順序存儲結構


2.3 線性表的鏈式存儲結構



1、線性表:是n個數據元素的有限序列。



直接前驅元素、直接後繼元素,n = 0時,稱為空表。


一個數據元素能夠有若幹個數據項組成。

在這樣的情況下,常把數據元素稱為記錄。含有大量記錄的線性表又稱為文件



2、基本運算

InitList(&L) 初始化操作 設定一個空的線性表L


ListLength(L) 求長度函數 函數值為線性表L中數據元素的個數


GetElem(L,i。&e) 取元素函數

1<=i <=Length(L)時返回L中第i個數據元素給e。否 則為空元素NULL。

i稱為該數據元素在L中的位序。


PriorElem(L,cur_e。&pre_e) 前驅函數 cur_e是L中的一個數據元素,若它的位序大於1,則函數 值為cur_e前驅pre_e,否則為NULL


NextElem(L。cur_e,&next_e) 求後繼元素 cur_e的位序小於表長,則函數值為elm的後繼 next_e否則為NULL


LocateElem(L,e,compare()) 定位函數 給定值e,若e不在表中,則返回0。否則返回e在表 中第一次出現時的位序


ListInsert(&L,i。e) 前插操作 在第i個元素之前插入新元素b,i的取值範圍為: 1<=i<=n+1。i=n+1表示在表尾插入。n為表長


ListDelete(&L,i,e) 刪除操作 刪除線性表L中的第i個元素。1<=i<=n,並用e返回 其值


ListEmpty(L) 判空表函數 若L為空表。則返回布爾值”true“,否則返回布爾 值“false”


ClearList(&L) 表置空操作 將L置為空表



3、線性表的順序存儲結構


線性表的順序存儲結構指的是用一組地址連續的存儲單元依次存儲線性表的數據元素。


Loc(ai) = Loc(a1) + (i - 1) *k



4、線性表的插入和刪除操作


線性表的動態分配順序存儲結構

技術分享


技術分享


為順序表添加一個大小為存儲LISTINCREMENT個數據元素的空間。


技術分享技術分享


插入算法的思路:


> 假設插入位置不合理,拋出異常;

> 假設線性表長度大於等於數組長度,則拋出異常或者動態添加容量;

> 從最後一個元素開始向前遍歷到第 i 個位置。分別將它們都向後移動一個位置;

> 將要插入的元素填入位置 i 處。

> 表長加 1。



算法:

技術分享

技術分享





刪除算法的思路:


> 假設刪除位置不合理。拋出異常。

> 取出刪除元素。

> 從刪除元素位置開始遍歷到最後一個元素位置,分別將他們都向前移動一個位置。

> 表長減 1。


技術分享


算法:

技術分享

技術分享

技術分享

技術分享



插入算法和刪除算法的時間復雜度都為 O(n)














數據結構(嚴蔚敏、吳偉民)——讀書筆記-2、 線性表及其基本運算、順序存儲結構