ホームページ  >  記事  >  バックエンド開発  >  Pythonは単一リンクリストを実装します

Pythonは単一リンクリストを実装します

巴扎黑
巴扎黑オリジナル
2016-11-26 11:54:181327ブラウズ

#コーディング:UTF-8


Classノード:def __init __(self、value):
self.data = value self.next = none


classlinklist:
def __init __(self、data = [0 0 0 ]):
self.head = None
self.init_link_list(data)

# 初化链表
# data は数组
def init_link_list(self, data):
if len(data) == 0:
print("初期化データは null")
return
self.head = Node(data[0])
current = self.head
data[1:]:
current.next = Node(index)
現在 = 現在.次

# 获取当前结点
def get_node(self, index):
if self.is_empty():
print("link is empty")
return
ifindex &gと; self.get_length() またはindex print("ノードが存在しません")
return
current = self.head
i = 0
while i if i == インデックス - 1:
return current
current = current.next
i += 1

# 获取当元素の值
def get_data(self,index):
current = self.get_node(index )
current が None の場合:
return "ノードが存在しません"
return current.data

# 打印链表
def print_link(self):
if self.is_empty():
return
リスト = []
現在 = self.head
current.next が None でない場合:
list.append(current.data)
current = current.next
else:
list.append(current.data)
print(list )

# 获取链表長度
def get_length(self):
if self.is_empty():
return 0
current = self.head
count = 0
current.next が None でない場合:
count += 1
current = current.next
else :
count += 1
return count

# 判断链表が空かどうか
# 空の場合は true を返す
# 空でない場合は false を返す def is_empty(self):
return self.head is None

# 現在の要素の後に要素を挿入
# インデックス要素のインデックス
# data 挿入された値
def add_after (self、index、data):de(data)
current = current.next
current.next suse 's' s 's' s 's' s 's' s 's' s 's' s 's' s s 's' s next self .head = node (data) self.head.next = current
return pre = self.get_pre_node(index) current = pre.next pre.next = Node(data) . Pre = pre.next
Pre. next = current

# を取得します。現在の要素の前の要素 def get_pre_node(self,index): gt; self.get_length( ) またはインデックス == インデックス - 2:
pre = pre.next
i += 1

# 削除指定された要素、および削除要素の値を返します
def remody(self、index):index == 1ではなく、self.is_empty():
データ= self .head.data( "。データが存在しません。」)
Is None: t Return "Current Node is None"
Current.data = Data

# 新しいリンクされたリストを現在のリンクされたリストにマージしました
DEF MERGE (SELF, DATA):
        size = self.get_length()
last_node = self.get_node(size)
last_node.next = data.head
return self

# test
y = (1,2,3,4)
s = ["a" , "b", "c", "d"]
linkList = LinkList(y)
# linkList.init_link_list(["a", "b", "c", "d"])
# Second = LinkList( )
# Second.init_link_list(["x", "y", "z"])
# linkList.add_after(-1, "x")
# linkList.add_after(1, "y")
# linkList。 init_link_list([])
# linkList.add_before(1,"x")
# linkList.print_link()
# print("item:", linkList.get_data(2))
# print("length:", linkList .get_length())
# print("空です", linkList.is_empty())
# print(linkList.get_pre_node(3).data)
# print("ノードの削除:",linkList.remove(2))
# linkList.merge(秒)


linkList.print_link()

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。