記得原來學資料結構和演算法基礎,覺得很難,現在用python實現資料結構太easy了。
以下是練習的樹結構和雙向鍊錶結構。
#tree
class treenode:
def __init__(self,value):#value is used here,node is used other places
self.parent=none
self.value=value
self.children=
def add_child(self,n):
n.parent=self
def digraph(self,g):#將樹轉換成networkx中的有向圖。
if self.parent==none:
g.add_node(self.value,level=0)
for c in self.children:
g.add_node(c.value,level=1)
g.add_edge(self.value,c.value)
c.digraph(g)
def getroot(self):
if self.parent==none:
return self
return self.parent.getroot()
#double linkedlist
class linkedlistnode(object):
def __init__(self, value=none):
self.prev = none
self.next = none
self.value = value
def str_left(self):
s=str(self.value)
n=self.prev
while n!=none:
s+="->"+str(n.value)
n=n.prev
return s
def str_right(self):
s=str(self.value)
n=self.next
while n!=none:
s+="->"+str(n.value)
n=n.next
return s
def str(self):
return self.head().str_right()
def link_right(self,b):
self.next=b
b.prev=self
def link_left(self,b):
self.prev=b
b.next=self
def unlink_right(self):
b=self.next
self.next=none
if b!=none:
b.prev=none
def unlink_left(self):
b=self.prev
self.prev=none
if b!=none:
b.next=none
def head(self):
if self.prev==none:
return self
else:
return self.prev.head()
def tail(self):
if self.next==none:
return self
else:
return self.next.tail()
# def cut_prev(self):
# before=self.prev
# if before!=none:
# else:
# unlinkab(before,self)
def remove_self(self):
before=self.prev
after=self.next
self.unlink_left()
self.unlink_right()
if before!=none and after!=none:
before.link_right(after)
資料結構 Python實現
參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...
資料結構 Python實現
參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...
Python實現Map資料結構
class hashtable def init self 初始化兩個list,乙個用來儲存鍵值,乙個用來儲存值 self.size 11 self.slots none self.size self.data none self.size 定義hash函式,使用餘數法 def hashfuncti...