python 資料結構一 之 線性表

2022-08-12 20:00:18 字數 1683 閱讀 8167

python資料結構教程第一課

python的一些實用的資料結構,原理加上例項原始碼。 

一、順序表的實現 

二、鏈結表的實現 

1.單鏈表 

2.帶尾指標的單鏈表 

3.迴圈單鏈表 

4.雙鏈表 

5.迴圈雙鏈表 

三、線性表的應用—josephus問題 

1.順序表解法 

2.迴圈單鏈表解法

在程式裡經常需要將一組資料元素作為整體管理和使用,需要建立這種元素組,用變數記錄它們,一組資料中包含的元素個數可能發生變化,也可能會用元素在序列裡的位置和順序,表示實際應用中的某種有意義資訊。線性表就是這樣一組元素的抽象,其具體實現方式有兩種,順序表和鏈結表

線性表的基本操作應當有建立空表、返回長度資訊、插入、刪除等操作,其基本的adt如下:

adt list:

list(self) #建立乙個新錶

is_empty(self) #判斷self是否是乙個空表

len(self) #返回表長度

prepend(self,elem) #在表頭插入元素

insert(self,elem,i) #在表的位置i處插入元素

del_first(self) #刪除第乙個元素

def_last(self) #刪除最後乙個元素

del(self,i) #刪除第i個元素

search(self,elem) #查詢元素在表中第一次出現的位置

forall(self,op) #對錶元素的遍歷操作,op操作

python內部的tuple與list採用的就是順序表結構,其不同點在於tuple是固定結構,一旦建立就無法進行改動,而list則支援變動操作,具有上述adt所描述的全部操作,這裡不再具體重寫類**,其主要使用命令如下

list1 = list([1,2,3,4,5])    #建立新錶

k = len(list1) #返回表長度

list1.insert(k,7) #在位置k插入7

list1.pop() #返回並刪除尾部元素

print(list1) #輸出表的全部元素

list2 = list1[2:] #表的切片操作

順序表的優勢:在於o(1)時間的定位元素訪問,很多簡單的操作效率也比較高,

比較麻煩的地方:在於表中間位置元素的插入刪除操作,由於元素在順序表的儲存區里連續排列,插入/刪除操作可能要移動很多元素,代價很高

基於鏈結技術實現的線性表稱為鏈結表或者鍊錶,用鏈結關係顯式表示元素之間的順序關係,鏈結表結構的基本思想如下: 

1.把表中的元素分別儲存在一批獨立的儲存塊(結點)裡 

2.保證從組成表結構中的任乙個結點可找到與其相關的下乙個結點 

3.在前一結點裡用鏈結的方式顯式地記錄與下一結點之間的關聯

在python裡鍊錶的實現有諸多方式和變形,接下來將選取主要的結構進行原始碼講解

Python之資料結構 線性表

線性表作為一種基本的資料結構型別,在計算機儲存器中的儲存一般有兩種形式,一種是順序儲存,一種是鏈式儲存。1.定義 若將線性表 l a0,a1,an 1 中的各元素依次儲存於計算機一片連續的儲存空間,這種機制表示為線性表的順序儲存 結構。2.特點 邏輯上相鄰的元素 ai,ai 1 其儲存位置也是相鄰的...

資料結構之線性表(一)

線性表的順序儲存結構 1.標頭檔案sqlist.h define true 1 define false 0 define ok 1 define error 0 define elemtype int define list init size 10 define list increment 1...

資料結構之線性表 一

因為準備考研的原因,想對資料結構進行深入學習,準備寫部落格來記錄學習的知識。如有問題的地方望各位大佬指出。首先定義 線性表是具有相同特性資料元素的乙個有限序列。線性表的儲存結構有順序儲存結構和鏈式儲存結構兩種。第一種稱為順序表,第二種稱為鍊錶。對於兩種結構的記憶,順序表跟陣列類似,而鍊錶像生活中的火...