總結一下鍊錶相關的操作技巧,直接上**。
# -*- 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...