2022-07-08|閱讀時間 ‧ 約 4 分鐘

從Python認識資料結構(二).陣列

列車車廂正是一種動態結構的展現,可隨需求增加或減少車廂數量
列車車廂正是一種動態結構的展現,可隨需求增加或減少車廂數量
各位好,延續從Python認識資料結構(一).陣列的內容,今天要介紹在上文提到以如何透過靜態結構-串列(List)及動態結構-鏈結串列(Linked List)新增及修改陣列中的元素。

第二章、陣列功能實作

2-1、新增元素
首先先介紹透過以靜態結構-串列(List)來實作陣列的方式該如何新增元素,非常簡單,只要用append這個方法,語法為「串列名稱.append(新元素)」這種方式便可將元素新增於串列的最後方。如果要新增至指定位置,則可使用insert這個方法,但是須注意的是,insert需帶有兩項參數,第一個是指定位置的索引值,第二個才是是插入的元素,該元素會直接被放置在指定索引值的位置。如果是想要將兩個靜態串列進行合併,則可使用extend,語法為「串列名稱1.extend(串列名稱2)」,這個方法可以直接將串列2直接加到串列1的後方。要特別注意的是,以上三種方式都會直接更動串列本身,是一種對自身直接進行修改的方法。 若採用鏈結串列(Linked List)的方式實踐,同樣可以完成上方三種功能,第一項功能為新增於鏈結串列尾端,定義一個函數為linked_list_append,我們只需將將當前指標指向最後一個節點,並將最後一個節點中的next屬性改為新資料節點的位置,即可完成新增元素於鏈結串列於尾端的功能。
與靜態結構的串列不同,鏈結串列中每一元素並無指定的索引值,因此,若要在指定元素後新增節點,我們必須先找出指定元素的位置,並在其後方新增新節點,並做部分更動,假設今天要求在員工Vivian後新增一名員工Ray,薪資為70000。需特別注意的是,在我們找到指定元素位置後,我們應先該位置後方的節點位置於新節點的next屬性中,避免流失後方串列資訊,順序很重要,若不小心先將指定位置的next屬性改為新資料節點,我們就會永久的失去後方鏈節的資訊
第三種功能是要合併兩個鏈結串列,方法十分簡單,就如同將新資料節點新增於鏈結串列尾端節點,我們只要先找到尾端節點,並將其next屬性更變成欲合併的鏈結串列首個資料點,刻意忽略B鏈結串列的首節點,便可完成兩個串列的合併。

2-2、修改元素
使用串列方式實踐陣列,其修改元素的方法十分簡單,只要指定元素的索引值,直接賦予新值,便可完成取代。若資料龐大,無法計算出指定元素的索引值。我們可透過index這個方法取得元素的索引值,方法為 "list.index(指定元素)",但若有多個重複的指定元素,此方法僅會回傳所找到第一個指定元素的位置。 鏈結串列中要修改特定元素其實內容也大同小異,我們只要找到該指定元素在鏈結串列的位置,並將其屬性進行修改即可。舉例來說,我們想找到一位員工名字為John的員工,並將其薪水改成42000,我們需從頭尋訪節點,找到名字為John的員工,並直接對其薪水屬性進行修改,即可完成修改特定元素的功能。
以上是本章的內容,下一章節會繼續討論使用Python處理陣列中刪除元素與部分重要功能,若有任何問題,歡迎寄信及留言與我一起討論。

參考書目
  1. 圖解資料結構 - 使用Python(第二版)
  2. 圖書演算法 - 使用Python
  3. Python3 物件導向程式設計 第二版
  4. 精通Python (第二版)

分享至
成為作者繼續創作的動力吧!
本專題將以Python程式語言來實作資料結構,依序從陣列(Array)、堆疊(Stack)、佇列(Queue)、樹(Tree)到圖(Graph),透過不同方式來建立資料結構,並討論部分細節如:建構難度、記憶體空間、效率等等。
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

炯男孩的沙龍 的其他內容

發表回應

成為會員 後即可發表留言
© 2024 vocus All rights reserved.