def add(self, item):
node = node(item)
pretemp = none
temp = self.head
result = false
# 其實不用單獨考慮是否為空表
# 即使是空,後面判斷pretemp時,已經暗含判斷了temp(或者說根本就沒用到temp.next)
# if temp == none:
# self.head = node
# result = true
# else:
while temp != none and not result:
if temp.getdata() > item:
result = true
else:
pretemp = temp
temp = temp.getnext()
if pretemp == none:
node.setnext(temp)
self.head = node
else:
pretemp.setnext(node)
node.setnext(temp)
同樣,在查詢元素時,也是如此。當我們從前向後遍歷時,如果遇到了比要查詢的元素大時,那就說明表中沒有這個資料。(因為後面的肯定比這個元素還大),就不需要繼續向後遍歷了。
def search(self, item):
temp = self.head
found = false
while temp != none and not found:
if temp.getdata == item:
found = true
elif temp.getdata > item:
break
else:
temp = temp.getnext()
return found
其他的方法和無序表類似,這裡就不再重覆記錄了。 無鎖有序鍊錶的實現
感謝同事 kevinlynx 在本站發表此文 無鎖有序鍊錶可以保證元素的唯一性,使其可用於雜湊表的桶,甚至直接作為乙個效率不那麼高的map。普通鍊錶的無鎖實現相對簡單點,因為插入元素可以在表頭插,而有序鍊錶的插入則是任意位置。本文主要基於 high performance dynamic lock ...
有序表的合併 煉表表實現
include using namespace std 函式結果狀態 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 define maxsize 100 st...
Python有序鍊錶 類的宣告
class node 這裡不用加括號,具體引數都在init函式裡,這也是和函式區別的一部分,函式的公升級和高階有序集合 def init self,val self.data val self.next none def getdata self return self.data def getne...