python3 資料結構 線性表

2021-10-10 01:12:31 字數 2420 閱讀 9577

線性表作為一種基本的資料結構型別,在計算機儲存器中的映象(或表示)一般有兩種形式,一種是順序映象,一種是鏈式映象。

1.定義:若將線性表l=(a0,a1, ……,an-1)中的各元素依次儲存於計算機一片連續的儲存空間,這種機制表示為線性表的順序儲存結構。

2.特點:

3.程式實現

在python中,list存放於一片單一連續的記憶體塊,故可借助於列表型別來描述線性表的順序儲存結構,而且列表本身就提供了豐富的介面滿足這種資料結構的運算。

l = [1,2,3,4]

#[1, 2, 3, 4, 10]

l.insert(1,20) #插入元素

#[1, 20, 2, 3, 4, 10]

l.remove(3) #刪除元素

#[1, 20, 2, 4, 10]

l[4] = 30 #修改

#[1, 20, 2, 4, 30]

l.index(2) #查詢

#2

1.定義:將線性表l=(a0,a1,……,an-1)中各元素分布在儲存器的不同儲存塊,稱為結點,每個結點(尾節點除外)中都持有乙個指向下乙個節點的引用,這樣所得到的儲存結構為鍊錶結構。

2.特點

3.程式實現

class node(self,data,next=none):

self.data = data

self.next = next

class linklist():

def __init__:

self.head = node(none)

def linklist(self,list1): #

p = self.head

for i in list1:

p.next = node(i)

p = p.next

def show_link(self): #

p = self.head.next

while p is not none:

print(p,end=" ")

p = p.next

print()

def get_length(self): #

p = p.head

n=0while p.next is not none:

n += 1

p = p.next

return p

def empty(self):

if self.get_length() == 0:

return true

else:

return false

def clear(self):

self.head.next = none

def add_link(self,data):

node = node(data)

p = self.head.next

while p is not none:

p = p.next

p = node

def insert(self,index,data):

if index<0 or index>self.get_length():

return indexerror("index out of range")

p = self.head.next

for i in range(index):

p = p.next

node = node(data)

node.next = p.next

p.next = node

def del_node(self,data):

p = self.head

while p.next and p.next.data != data:

p = p.next

if p.next == none:

raise valueerror("value is error")

else:

p.next = p.next.next

def get_data(self,index):

if index<0 or index>self.get_length():

return indexerror("index out of range")

p = self.head.next

for i in range(index):

p = p.next

return p.data

資料結構 線性表3

每天要學習的太多,今天花大量時間敲完靜態鍊錶的 發現後面還有迴圈鍊錶,雙向鍊錶,這樣學習效率太低。所以後面不打算把偽碼重新實現一遍,只記錄學習的要點等。通過物理的線性結構實現邏輯的鏈式儲存,下標由0開始,及s 0 為第乙個資料。typedef struct component,staticlinkl...

資料結構3 線性表

設計演算法,將兩個安置遞增有序的單鏈表合併成乙個安置遞增有序的單鏈表。void listmerge linklist la,linklist lb,linklist lc else if la lc next la if lb lc next lb 設l為一帶有頭結點的迴圈單鏈表,鍊錶中儲存一組無序...

大話資料結構 線性表 3

順序儲存結構的建立,其實就是乙個陣列的初始化,即宣告乙個型別和大小的陣列並賦值的過程。而單鏈表和順序儲存結構就不一樣,他不像順序儲存結構那麼集中,他可以很分散,是一種動態結構。對於每個鍊錶來說,它所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際的需求即時生成。所以,建立單鏈表的...