在有些情況下,存儲(chǔ)數(shù)據(jù)的內(nèi)存分配不能位于連續(xù)的內(nèi)存塊中。 所以接受指針的幫助,其中數(shù)據(jù)和數(shù)據(jù)元素的下一個(gè)位置的地址也被存儲(chǔ)。 所以從當(dāng)前數(shù)據(jù)元素的值中知道下一個(gè)數(shù)據(jù)元素的地址。通常這樣的結(jié)構(gòu)被稱為指針。 但在Python中,將它們稱為節(jié)點(diǎn)。
節(jié)點(diǎn)是各種其他數(shù)據(jù)結(jié)構(gòu)鏈表和樹在python中處理的基礎(chǔ)。
class daynames:
def __init__(self, dataval=None):
self.dataval = dataval
self.nextval = None
e1 = daynames('Mon')
e2 = daynames('Tue')
e3 = daynames('Wed')
e1.nextval = e3
e3.nextval = e2
可以通過創(chuàng)建一個(gè)變量并為其分配第一個(gè)元素來遍歷上面創(chuàng)建的節(jié)點(diǎn)的元素。 然后使用while循環(huán)和nextval指針來打印出所有的節(jié)點(diǎn)元素。 請注意,我們還有一個(gè)額外的數(shù)據(jù)元素,并將nextval指針正確排列,以便按照正確的順序?qū)⑤敵鲎鳛橐恢苤械哪程臁?/p>
class daynames:
def __init__(self, dataval=None):
self.dataval = dataval
self.nextval = None
e1 = daynames('Mon')
e2 = daynames('Wed')
e3 = daynames('Tue')
e4 = daynames('Thu')
e1.nextval = e3
e3.nextval = e2
e2.nextval = e4
thisvalue = e1
while thisvalue:
print(thisvalue.dataval)
thisvalue = thisvalue.nextval
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Mon
Tue
Wed
Thu
插入和刪除等附加操作可以通過在鏈表和樹等通用數(shù)據(jù)結(jié)構(gòu)中,使用此節(jié)點(diǎn)容器來實(shí)現(xiàn)適當(dāng)?shù)姆椒▉硗瓿伞?我們將在接下來的章節(jié)中進(jìn)行研究和學(xué)習(xí)。