線性表和鍊錶

2022-09-11 23:30:28 字數 2664 閱讀 6602

線性表在python中有元組、列表、集合以及字典,非線性表目前介紹鍊錶。

名稱 儲存型別

是否可變

是否有序

儲存是否可重複

列表1.使用中括號括起來;如 list=[1,2,3,4] 2.可以儲存任何型別; 3.可以儲存不同型別的資料(不建議);

可以增、刪、改、查;是 是

元組1.使用小括號括起來;如 tuple = (1,2,3,4) 2.可以儲存任何型別; 3.可以儲存不同型別的資料(不建議)

可以查; 是是

集合1.使用小括號括起來,引數一般是乙個list;如 set = set([1,2,3,4]) 2.一般傳入的是乙個列表;

可以增、刪、改、查; 無否

字典1.使用大括號括起來,鍵值對的方式;如 dict = 2.只能使用不可變型別作為鍵,值得型別任意;

可以增、刪、改、查;無否

通俗來講,鍊錶鍊錶就是像一條鍊子一樣把資料穿起來形成一張表。鍊錶儲存方式是不連續儲存,上乙個資料通過位址來尋找下乙個資料的儲存位置。所以鍊錶的每乙個儲存但是是資料+下乙個資料儲存的位址,稱為節點;如圖

列表鍊錶

讀取o(1)

o(n)

插入o(n)

o(1)

刪除o(1)

o(n)

仿照列表,鍊錶會有增、刪、改、查,其中增又有頭插、尾查、任意位置插入。查又有遍歷和給定條件查詢。

**:

"""節點的宣告,節點是鍊錶的基本組成部分"""

class node(object):

def __init__(self, item):

self.item = item # 儲存資料的部分

self.next = none # 儲存位址的部分

"""單鏈表的操作"""

class siglelink(object):

def __init__(self):

self.__head = none # 鍊錶給定乙個頭節點

def add(self, item):

"""在開頭插入資料"""

node = node(item)

node.next = self.__head

self.__head = node

def is_empty(self):

"""判斷是否為空"""

return self.__head is none

def length(self):

"""計算長度"""

count = 0

cur = self.__head

while cur != none:

count += 1

cur = cur.next

return count

"""尾插法"""

node = node(item)

if self.is_empty():

self.__head = node

else:

cur = self.__head

while cur.next!=none:

cur = cur.next

print self.__head

cur.next = node

def insert(self, pos, item):

"""指定的位置插入"""

if pos <=0:

self.add(item)

elif pos > self.length()-1:

else:

node = node(item)

pre = self.__head

count = 0

while count < pos-1:

count+=1

pre = pre.next

node.next = pre.next

pre.next = node

def remove(self, item):

"""刪除第乙個發現的元素"""

cur = self.__head

pre = none

while cur != none:

if cur.item == item:

if not pre:

self.__head = cur.next

else:

pre.next = cur.next

break

else:

pre = cur

cur = cur.next

def tr**el(self):

"""遍歷"""

cur = self.__head

while cur!=none:

print cur.item,

cur = cur.next

print

def search(self, item):

"""查詢"""

cur = self.__head

while cur!=none:

if cur.item ==item:

return true

else:

cur = cur.next

return false

線性表 鍊錶

線性表的adt list.h 線性表的c 抽象類宣告 templateclass list 單鏈表節點的定義 link.h 單鏈表節點類的定義 template class link link link nextval null 鍊錶的實現宣告 成員函式的是實現 鍊錶的實現宣告 include st...

線性表 鍊錶

include include typedef int elemtype typedef struct node lnode,linklist linklist createlinklist1 頭插法 linklist createlinklist2 尾插法 void lengthlinklist ...

線性表,鍊錶

資料的儲存結構分為鏈式儲存結構,線性儲存結構。不管什麼型別的資料結構,都會以這兩種儲存方式在計算機中儲存。線性儲存結構就是開闢一段連續的記憶體 記憶體大小已經確定 將資料儲存在這段連續記憶體中,這種儲存結構的優點是可以快速地取出元素,時間複雜度為o 1 缺點是插入和刪除需要移動大量的元素,時間複雜度...