Python鍊錶那些事

2021-08-19 10:23:02 字數 2394 閱讀 6082

總結一下鍊錶相關的操作技巧,直接上**。

# -*- coding: utf-8 -*-

class node(object):

'''節點類,記錄值和下一節點指標'''

def __init__(self, value, nt_node):

self.value = value

self.nt_node = nt_node

def show_chain(f_node):

'''順序列印鍊錶元素'''

order_list =

c_node = f_node

while c_node.nt_node is not none:

c_node = c_node.nt_node

print order_list

def make_chain():

'''建立頭節點,並生成後續節點,返回頭節點'''

f_node = node(0, none)

c_node = f_node

for i in xrange(1, 9):

new_node = node(i, none)

c_node.nt_node = new_node

c_node = new_node

return f_node

def reverse_normal(f_node):

'''反轉鍊錶'''

_pre, _cur, _next = none, f_node, none

while _cur.nt_node is not none:

_next = _cur.nt_node

_cur.nt_node = _pre

_pre, _cur = _cur, _next

_cur.nt_node = _pre

return _cur

def reverse_recursion(f_node):

'''遞迴反轉'''

if (f_node is none) or (f_node.nt_node is none):

return f_node

head_node = reverse_recursion(f_node.nt_node)

f_node.nt_node.nt_node = f_node

f_node.nt_node = none

return head_node

def mide_chain(f_node):

'''找出鍊錶的中間節點'''

_fast, _slow = f_node, f_node

while (_fast is not none) and (_fast.nt_node) is not none:

_slow = _slow.nt_node

_fast = _fast.nt_node.nt_node

print _slow.value

def exchange_chain(f_node):

'''兩兩節點對換'''

if (f_node is none) or (f_node.nt_node is none):

return f_node

_temp = f_node.nt_node.nt_node

f_node.nt_node.nt_node = f_node

_next = f_node.nt_node

f_node.nt_node = exchange_chain(_temp)

return _next

if __name__ == '__main__':

'''初始化鍊錶並列印;

結果:[0, 1, 2, 3, 4, 5, 6, 7, 8]'''

node_chain = make_chain()

show_chain(node_chain)

'''反轉鍊錶並列印;

結果:[8, 7, 6, 5, 4, 3, 2, 1, 0]'''

rev_chain = reverse_normal(node_chain)

show_chain(rev_chain)

'''反轉反轉後的鍊錶(與原鍊錶一致)並列印;

結果:[0, 1, 2, 3, 4, 5, 6, 7, 8]'''

rev_rev_chain = reverse_recursion(rev_chain)

show_chain(rev_rev_chain)

'''乙個鍊錶兩兩交換

結果:[1, 0, 3, 2, 5, 4, 7, 6, 8]'''

show_chain(exchange_chain(make_chain()))

'''鍊錶的中間節點'''

mide_chain(make_chain())

雜湊表那些事

1官方定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。給定表m,存在函式f key 對任意給定的關鍵字值key,...

Python模組那些事

自定義模組 python之所以強大,是因為極其活躍的python開發社群無時無刻不有大神在開發和分享自己的大作,也就是所謂的模組,而我們只需要通過匯入和使用這些模組即可。一旦完成安裝,想要在自己的 裡使用模組將十分容易,不過需要注意有以下幾種不同的匯入方法 import bio as biopyth...

Python的那些事

python是什麼?python能做什麼?怎麼配置python的開發環境?誰能學習python?怎麼學習python?定義 python是一種跨平台的計算機程式語言,是解釋型,強型別定義和動態的高階程式語言。或許你對其中的名詞存在疑惑,但是沒關係,我現在給你解釋一下他們的含義。vim install...