학습 노트 - 순환 싱글 체인 시트 (Python 구현)
7460 단어 데이터 구조
순환 목록 대상 에 표 끝 점 을 기록 하면 O (1) 시간의 표 머리 / 표 끝 삽입 과 O (1) 시간의 표 머리 삭 제 를 실현 할 수 있 습 니 다.
순환 링크 의 결점 이 하나의 원 으로 연결 되 기 때문에 어느 결점 이 표 두 나 표 미 이 고 주로 개념 문제 이 며 표 의 형태 에서 구분 할 수 없다.
다음은 간단 한 순환 단일 체인 표 류 를 실 현 했 는데 그 중에서 몇 가지 전형 적 인 조작 을 포함한다.
class Node:
def __init__(self, elem):
self.elem = elem
self.pnext = None
def __repr__(self): # ‘ ’ ,
return str(self.elem)
class LCList:
def __init__(self):
self.rear = None
def is_empty(self):
"""
:return: boolean
"""
return self.rear == None
def prepend(self, elem): #
p = Node(elem)
if self.rear is None:
p.pnext = p #
self.rear = p
else:
p.pnext = self.rear.pnext
self.rear.pnext = p
def append(self, elem): #
self.prepend(elem)
self.rear = self.rear.pnext
def pop_start(self): #
if self.rear is None:
print("The list is None.")
return
p = self.rear.pnext
if self.rear is p: #
self.rear = None
else:
self.rear.pnext = p.pnext # rear
return p.elem
def printall(self):
if self.is_empty():
return
p = self.rear.pnext
print("Head", end=' ')
while True:
print("-->", p.elem, end=' ')
if p is self.rear:
break
p = p.pnext
print("--> None. Linked node finished")
if __name__ == '__main__':
node1 = Node(elem='node1')
node2 = Node(elem='node2')
lclist = LCList()
lclist.append(node1)
lclist.append(node2)
lclist.printall()
print(lclist.pop_start())
lclist.printall()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.