python 데이터 구조에서 양방향 순환 체인 테이블 조작을 실현하는 예시

이 블로그를 보기 전에 B역의 동영상을 보는 것을 권장합니다python 데이터 구조와 알고리즘 시리즈 과정 이 과정에서 쌍방향 순환 체인 테이블의 조작을 실현하지 못했기 때문에 저는 이 영상의 체인 테이블 사고방식에 따라 쌍방향 순환 체인 테이블의 조작을 실현했습니다. 여러분의 읽기와 교류를 환영합니다. 권리 침해가 있으면 블로거에게 연락하세요!
코드는 다음과 같습니다.

class Node:
  def __init__(self, elem):
    self.elem = elem
    self.prev = None
    self.next = None


class DoubleCycleLinkList:
  def __init__(self, node=None):
    self.__head = node

  def is_empty(self):
    """ """
    if self.__head is None:
      return True
    return False

  def length(self):
    """ """
    if self.is_empty():
      return 0
    cur = self.__head
    count = 1
    while cur.next is not self.__head:
      count += 1
      cur = cur.next
    return count

  def travel(self):
    """ """
    if self.is_empty():
      return
    cur = self.__head
    while cur.next is not self.__head:
      print(cur.elem, end=" ")
      cur = cur.next
    print(cur.elem, end=" ")
    print("")

  def add(self, elem):
    """ """
    node = Node(elem)
    if self.is_empty():
      self.__head = node
      node.prev = node
      node.next = node
    else:
      self.__head.prev.next = node
      node.prev = self.__head.prev
      node.next = self.__head
      self.__head.prev = node
      self.__head = node

  def append(self, elem):
    """ """
    node = Node(elem)
    if self.is_empty():
      self.__head = node
      node.prev = node
      node.next = node
    else:
      node.next = self.__head
      node.prev = self.__head.prev
      self.__head.prev.next = node
      self.__head.prev = node

  def insert(self, pos, elem):
    """ (pos) ,  0 """
    if pos <= 0:
      self.add(elem)
    elif pos > (self.length() - 1):
      self.append(elem)
    else:
      count = 0
      cur = self.__head
      node = Node(elem)
      while count < (pos - 1):
        count += 1
        cur = cur.next
      node.next = cur.next
      node.prev = cur
      node.next.prev = node
      cur.next = node

  def remove(self, elem):
    """ , , """
    if self.is_empty():
      return
    cur = self.__head
    while cur.next is not self.__head:
      if cur.elem == elem:
        if cur is self.__head:
          self.__head = cur.next
          cur.prev.next = cur.next
          cur.next.prev = cur.prev
        else:
          cur.prev.next = cur.next
          cur.next.prev = cur.prev
        break
      cur = cur.next
    if cur.elem == elem:
      cur.prev.next = self.__head
      self.head = cur.prev

  def search(self, elem):
    """ """
    if self.is_empty():
      return False
    cur = self.__head
    while cur.next is not self.__head:
      if cur.elem == elem:
        return True
      cur = cur.next
    # while , 
    if cur.elem == elem:
      return True
    return False
이는python이 데이터 구조에서 쌍방향 순환 체인 테이블 조작을 실현하는 예시에 관한 이 글을 소개합니다. 더 많은 관련python 쌍방향 순환 체인 테이블 조작 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 저희를 많이 지지해 주십시오!

좋은 웹페이지 즐겨찾기