這篇文章主要介紹了python/golang如何實現迴圈鍊錶,幫助大家更好的理解和學習迴圈鍊錶的實現方法,感興趣的朋友可以了解下
迴圈鍊錶就是將單鏈表的末尾指向其頭部,形成乙個環。迴圈鍊錶的增刪操作和單鏈表的增刪操作區別不大。只是增加時,需要考慮空鍊錶增加第乙個節點的特殊情況;刪除時需考慮刪除節點是頭/尾節點,和鍊錶中只有乙個節點的特殊情況。
golang實現:
type node structpython實現:type circle struct
// 增加節點:
func (c *circle) add(value int)
if c.lenth == 0 else
c.lenth += 1
c.printcircle()}
// 刪除節點:
func (c *circle) remove(v int) else if c.lenth == 1 && c.tail.value == v
pre := c.tail
cur := c.tail.next // 頭節點
for i := 0; i < c.lenth; i++
pre.next = cur.next
c.lenth -= 1
c.printcircle()
return
} pre = cur
cur = cur.next
} fmt.println(v, "不在環中")}
//列印節點:
func (c *circle) printcircle()
cur := c.tail.next // 頭節點
for i := 0; i < c.lenth; i++
fmt.println()}
func testcircle()
circle.add(1)
circle.remove(10)
circle.printcircle()
}
class node:以上就是python/golang實現迴圈鍊錶的示例**的詳細內容。def __init__(self, value, next=none):
self.value = value
self.next = next
def __str__(self):
return str(self.value)
class circle:
def __init__(self):
self.tail = none
self.lenth = 0
# 增加節點
def add(self, v):
new_node = node(v)
if self.lenth == 0: # 空煉表中新增節點
self.tail = new_node
self.tail.next = new_node
else:
new_node.next = self.tail.next
self.tail.next = new_node
self.tail = new_node
self.lenth += 1
# 刪除節點
def remove(self, v):
if self.lenth == 0:
print("空環")
return
elif self.lenth == 1 and self.tail.value == v: # 鍊錶中只有乙個節點的特殊情況
self.tail = none
self.lenth = 0
return
pre = self.tail
cur = self.tail.next # 頭節點
for i in range(self.lenth):
if cur.value == v:
if cur == self.tail: # 如果刪除的節點是尾節點,需更新tail
self.tail = pre
pre.next = cur.next
self.lenth -= 1
return
pre = cur
cur = cur.next
print(v, "不在環中")
# 列印鍊錶
def print_circle(self):
if self.lenth == 0:
print('空環')
return
cur = self.tail.next # 頭節點
for i in range(self.lenth):
print(cur, end=" ")
cur = cur.next
print()
def test():
c = circle()
for i in range(10):
c.add(i)
c.print_circle()
c.remove(0)
c.print_circle()
c.remove(10)
c.print_circle()
c.remove(9)
c.print_circle()
c.remove(4)
c.print_circle()
教你如何運用自聯接(不太明白)
sql有乙個技巧可以運用自聯接來把每一行與下一行對應。像上面這種查詢,你可以製造像秩 rank 或者位置 position 行差 row differences 累積總計 running total 等等的資料 it專家網獨家 如果不使用分析函式,怎麼樣能夠查詢累積和?例如 1 150 150 1 ...
教你迅速運用Summary
在研究tensorflow自帶的例程speech command,順便學習tensorflow的一些基本用法。其中tensorboard 作為一款視覺化神器,可以說是學習tensorflow時模型訓練以及引數視覺化的法寶。而在訓練過程中,主要用到了tf.summary 的各類方法,能夠儲存訓練過程以...
教你如何運用golang 實現陣列的隨機排序
本文主要介紹了golang 陣列隨機排序的實現,文中通過示例 介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們可以參考一下 前言 目前接到乙個推薦資料的需求,需要將資料庫中獲取到的資料進行隨機排序後返回給使用者。考慮了一下,有兩種使用方式,一種是通過資料庫 order by rand 還有一種就...