資料結構 2 1線性表及其實現

2021-08-30 02:12:02 字數 2242 閱讀 1727

線性結構是資料結構裡面最基礎最簡單的一種資料結構型別,最典型的一種叫做線性表

舉個例子:

如何用程式語言來表示這樣的乙個一元多項式及其相應的操作運算呢?

順序儲存結構直接表示

用乙個陣列儲存第i項的係數ai,而指數對應這個分量的下標

這樣帶來的問題是什麼呢?假如我要表示x的兩千次方,陣列的大小就需要2001項,而其中很多都是含有0的項,這樣就造成了儲存空間的浪費

而且在做加法的時候,需要把陣列做乙個迴圈,需要從0開始加到2000,實際上很多計算都是在加一些無效的0

順序儲存結構表示非零項

將多項式看成是乙個(ai, i)二元組的集合,這樣,每乙個分量就不單單只包含係數了,還包含了指數

這裡要注意的是:

按指數的大小進行排列,在做加法的時候就能夠達到比較快的運算速度

用鍊錶結構來儲存非零項

鍊錶中的每個結點儲存多項式中的乙個非零項,包括係數和指數兩個資料域乙個指標域

在做加法運算的時候,就和2中兩個陣列的運算是一樣的:

分別指向多項式的頭,然後比較指數大小,大的輸出,相等的係數相加

總結

線性表:

線性表的抽象資料型別描述思想:利用陣列的連續儲存空間順序依次存放線性表的各個元素

初始化(建立空表)

查詢

i為下標,要小於等於last指向的最後乙個元素的位置通過下標i來訪問線性表中的每乙個元素,判斷它是否等於x

如果i大於了last指向的最後乙個位置,則說明沒有找到,否則返回找到x時儲存的位置。

這樣一種查詢方法,查詢成功的平均比較次數為(n+1)/2,**運氣好第乙個找到,運氣不好最後乙個才找到,平均就是(n+1)/2,**平均時間效能為o(n)

插入(在第i(1<= i <= n+1)個位置上插入乙個值為x的新元素)

刪除(刪除表的第i(1<= i <=n)個位置上的元素)

分析:線性表的順序儲存結構,在存、讀資料時,不管是哪個位置,時間複雜度都是o(1);而插入或刪除元素時,時間複雜度都是o(n)。這就說明,它比較適合元素個數不太變化,而更多是訪問資料的應用。

求表長

查詢插入(在第i-1(1<= i <=n+1)個結點後插入乙個值為x的新結點)

刪除(刪除鍊錶的第i(1<= i <=n)個位置上的結點)

資料結構2 1 線性表及其實現

操作集 線性表 list,元素x elementtype,線性表的基本操作有 線性表的順序儲存實現 typedef struct lnode list struct lnode struct lnode l list ptrl 訪問下標為i的變數 l.data i ptrl data i 返回線性表...

浙大資料結構 2 1線性表及其實現

eg1 一元多項式及其運算 方法一 順序儲存結構直接表示。使用陣列下標表示指數,對應值表示係數。弊端 不適合非零項多 指數大的多項式。方法二 順序儲存結構表示非零項。使用二維陣列儲存指數和係數。弊端 不適合多項式的運算。方法三 鍊錶儲存非零項。由同型別資料元素,構成有序序列的線性結構。型別名稱 線性...

(筆記)資料結構2 1 線性表及其實現 一

例 一元多項式及其運算 一元多項式 f x a 0 a1 x an 1xn 1 a nsx 主要運算 多項式相加 相減 相乘等 方法1 順序儲存結構直接表示 陣列各分量對應多項式各項 a i 項 xi的系 數ai 例如 f x 4 x5 3 x2 1 表示成 問題 表示x x2000 浪費很多記憶體...