資料結構演算法 線性表的實現

2021-09-26 18:22:00 字數 2974 閱讀 7763

陣列是線性表資料結構中順序儲存的具體實現。用一組連續的記憶體空間,儲存相同型別的資料

鍊錶是線性表資料結構中鏈式儲存的具體實現。用節點指標把各個節點串聯在一起

根據線性表順序儲存的資料結構特徵,我們可以知道,陣列的插入、刪除時間複雜度為o(n),因為涉及到資料的搬移操作;陣列的根據下標訪問元素的時間複雜度為o(1),這是連續的記憶體空間帶來的優勢,根據定址公式我們可以很容易的找到指定下標的記憶體位址

class

myarray

/** * 判斷陣列是否已滿

*/private

function

full()

/** * 索引是否超出範圍

*/private

function

outofrange

($index

)/**

* 根據索引訪問資料元素

*/public

function

find

($index

)return

$this

->

data

[$index];

}/**

* 在指定索引 index 處插入資料 data

*/public

function

insert

($index

,$data

)for($i

=$this

->

len-1;

$i>=

$index;$i

--)$this

->

data

[$index]=

$data

;$this

->

len++

;return

$index;}

/** * 刪除指定索引的值

*/public

function

delete

($index

)$data

=$this

->

data

[$index];

for($i=

$index;$i

<

$this

->

len-1;

$i++

)// unset 掉移動元素後最後的重複元素

unset

($this

->

data

[$this

->

len-1]

);$this

->

len--

;return

$data;}

}

class

linkedlistnode

}class

linkedlist

/** * 插入節點,預設頭插法 (頭節點後插入)

*/public

function

insert

($value

)catch

(exception$e)

return

true;}

/** * 查詢值等於給定值的節點

*/public

function

getnodebyvalue

($value

)$curnode

=$curnode

->

next;}

return

null;}

/** * 查詢鍊錶的第 index 個節點

*/public

function

getnodebyindex

($index

)$curnode

=$this

->

head

;for($i

=0;$i

<=

$index;$i

++)return

$curnode;}

public

function

delete

(linkedlistnode $node

)$prenode

=$this

->

getprenode

($node);

$prenode

->

next

=$node

->

next

;unset

($node);

$this

->

len--

;return

true;}

private

function

getprenode

(linkedlistnode $node

)$curnode

=$this

->

head

;$prenode

=$this

->

head

;while

(null

!=$curnode

&&$curnode

!=$node

)return

$prenode;}

/** * 指定節點後插入元素

*/private

function

insertafternode

(linkedlistnode $node

,$value

)}

資料結構與演算法 線性表

概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...

資料結構與演算法 線性表

n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...

資料結構與演算法 線性表

1.線性表 1.1 線性表的定義和基本運算 定義 線性表是具有相同資料型別的n個資料元素的有限序列。除表頭元素外,每個元素有且僅有乙個直接前驅 除表尾元素外,每個元素有且僅有乙個直接後繼。特點 個數有限 具有邏輯上的順序性 資料元素型別都相同。基本操作 初始化 求表長 按值查詢 按位查詢 插入 刪除...