線性表作為一種基本的資料結構型別,在計算機儲存器中的映象(或表示)一般有兩種形式,一種是順序映象,一種是鏈式映象。
1.定義:若將線性表l=(a0,a1, ……,an-1)中的各元素依次儲存於計算機一片連續的儲存空間,這種機制表示為線性表的順序儲存結構。
2.特點:
3.程式實現
在python中,list存放於一片單一連續的記憶體塊,故可借助於列表型別來描述線性表的順序儲存結構,而且列表本身就提供了豐富的介面滿足這種資料結構的運算。
1.定義:將線性表l=(a0,a1,……,an-1)中各元素分布在儲存器的不同儲存塊,稱為結點,每個結點(尾節點除外)中都持有乙個指向下乙個節點的引用,這樣所得到的儲存結構為鍊錶結構。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
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
順序儲存結構的建立,其實就是乙個陣列的初始化,即宣告乙個型別和大小的陣列並賦值的過程。而單鏈表和順序儲存結構就不一樣,他不像順序儲存結構那麼集中,他可以很分散,是一種動態結構。對於每個鍊錶來說,它所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際的需求即時生成。所以,建立單鏈表的...