Python 으로 일반적인 데이터 구조 구현 (1) - 질서 있 는 단 방향 링크
# coding:utf-8
# python ,
class Node(object):
'''
'''
def __init__(self,data):
'''
:type data: , ( )
'''
self.data = data
self.next = None
class OrderedLinkedList(object):
'''
'''
def __init__(self,datas = []):
'''
:type datas: ,
'''
# , None
self.head = None
for data in datas:
self.insert(data)
def insert(self,data):
'''
, ,
:type data: ,
'''
new_node = Node(data)
# head , head
if not self.head:
self.head = new_node
return
# data head , head
if data < self.head.data:
new_node.next = self.head
self.head = new_node
return
#
pre = self.head
cur = self.head.next
while cur:
# data cur.data,
if data >= cur.data:
pre = cur
cur = cur.next
#
else:
break
# pre cur
new_node.next = cur
pre.next = new_node
def delete(self,data):
'''
, , ; ,
:type data: ,
'''
if not self.head:
raise ValueError('element NOT exist!')
# head data, head
if data == self.head.data:
self.head = self.head.next
return
pre = self.head
cur = self.head.next
while cur:
if data == cur.data:
pre.next = cur.next
return
pre = cur
cur = cur.next
raise ValueError('element NOT exist!')
def search(self,data):
'''
( 0 )
, ; ,
:type data: ,
'''
cur = self.head
if not cur:
raise ValueError('element NOT exist!')
idx = 0
while cur:
if data == cur.data:
return idx
break
idx += 1
cur = cur.next
raise ValueError('element NOT exist!')
def output(self):
'''
, :'1->3->4->5'
'''
cur = self.head
datas = []
while cur:
datas.append(str(cur.data))
cur = cur.next
print '->'.join(datas)
if __name__ == '__main__':
#
chain = OrderedLinkedList(range(5)[::-1])
chain.output()
#
chain.insert(2)
chain.output()
chain.insert(-1)
chain.output()
chain.insert(99)
chain.output()
#
print chain.search(99)
print chain.search(2)
# print chain.search(100)
#
chain.delete(-1)
chain.output()
chain.delete(3)
chain.output()
chain.delete(99)
chain.output()
chain.delete(100)
chain.output()
# :
'''
0->1->2->3->4
0->1->2->2->3->4
-1->0->1->2->2->3->4
-1->0->1->2->2->3->4->99
7
3
0->1->2->2->3->4->99
0->1->2->2->4->99
0->1->2->2->4
Traceback (most recent call last):
File "E:\code\algorithm\data-structure\linkedlist.py", line 145, in
chain.delete(100)
File "E:\code\algorithm\data-structure\linkedlist.py", line 87, in delete
raise ValueError('element NOT exist!')
ValueError: element NOT exist!
'''
코드 가 업데이트 되 었 습 니 다: 나의 GitHub
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.