PYTHON中的鍊錶

2021-10-01 09:03:49 字數 3081 閱讀 6807

鍊錶(linked list)是由一組被稱為結點的資料元素組成的資料結構,每個結點都包含結點本身的資訊和指向下乙個結點的位址。由於每個結點都包含了可以鏈結起來的位址資訊,所以用乙個變數就能夠訪問整個結點序列。也就是說,結點包含兩部分資訊:一部分用於儲存資料元素的值,稱為資訊域;另一部分用於儲存下乙個資料元素位址的指標,稱為指標域。鍊錶中的第乙個結點的位址儲存在乙個單獨的結點中,稱為頭結點或首結點。鍊錶中的最後乙個結點沒有後繼元素,其指標域為空。

class

node

():

'建立節點'

def__init__

(self,data):

self.data = data

self.next =

none

class

linklist

():

'建立列表'

def__init__

(self, node):

'初始化列表'

self.head = node

self.head.next =

none

self.tail = self.head

defadd_node

(self, node):

'新增節點'

self.tail.next = node

self.tail = self.tail.next

defview

(self):

'檢視列表'

node = self.head

link_str =

''while node

isnotnone:

if node.next

isnotnone:

link_str += str(node.data) +

'-->'

else:

link_str += str(node.data)

node = node.next

print (

'the linklist is:' + link_str)

deflength

(self):

'列表長度'

node = self.head

count =

1while node.next

isnotnone:

count +=

1node = node.next

print (

'the length of linklist are %d' % count)

return count

defdelete_node

(self, index):

'刪除節點'

if index+

1 > self.length():

raise indexerror(

'index out of bounds')

num =

0node = self.head

while

true:

if num == index

-1:break

node = node.next

num +=

1tmp_node = node.next

node.next = node.next.next

return tmp_node.data

deffind_node

(self, index):

'檢視具體節點'

if index+

1 > self.length():

raise indexerror(

'index out of bounds')

num =

0node = self.head

while

true:

if num == index:

break

node = node.next

num +=

1return node.data

node1 = node(

10)node2 = node(

'dec')

node3 = node(

1010)

node4 = node(

'bin')

node5 = node(

12)node6 = node(

'oct')

node7 = node(

'a')

node8 = node(

'hex')

linklist = linklist(node1)

linklist.add_node(node2)

linklist.add_node(node3)

linklist.add_node(node4)

linklist.add_node(node5)

linklist.add_node(node6)

linklist.add_node(node7)

linklist.add_node(node8)

linklist.view()

linklist.length()

linklist.delete_node(

1)linklist.view()

find_node = linklist.find_node(

6)print (find_node)

the linklist is:

10-->dec-->

1010-->bin-->

12-->oct-->a-->hex

the length of linklist are

8the length of linklist are

8the linklist is:

10-->

1010-->bin-->

12-->oct-->a-->hex

the length of linklist are

7hex

python中煉表和陣列 Python

x 2020 9 12 12 24 上傳 2020 9 12 12 24 上傳 2020 9 12 12 24 上傳 曾經有個禿頂的面試官問了我乙個問題 陣列相對於鍊錶,為什麼我們都說陣列查詢效率快?python 大星 陣列占用的記憶體空間是連續的 面試官 還有其他的嗎?python 大星 以 in...

python鍊錶

class node def init self,data 要存的資料 self.data data 指向下乙個節點的指標 self.next none class linkedlist def init self 鍊錶長度 self.size 0 鍊錶的頭部 self.head none 鍊錶的尾...

鍊錶(python)

class node def init self,value none next none self.value value self.next next class linkedlist def init self self.head node self.tail none self.length...