Python 데이터 구조의 단일 체인 테이블 상세 설명

본 논문 의 사례 는 Python 데이터 구조의 단일 체인 표 의 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.

#    
class Node():
  __slots__=['_item','_next'] #   Node     
  def __init__(self,item):
    self._item = item
    self._next = None # Node         None
  def getItem(self):
    return self._item
  def getNext(self):
    return self._next
  def setItem(self,newitem):
    self._item = newitem
  def setNext(self,newnext):
    self._next=newnext

#    
class SingleLinkedList():
  def __init__(self):
    self._head = None #                 
    self._size = 0 #     

  #        
  def size(self):
    current = self._head
    count = 0
    while current != None:
      count += 1
      current = current.getNext()
    return count

  #     
  def travel(self):
    current = self._head
    while current != None:
      print(current.getItem())
      current = current.getNext()
  #         
  def isEmpty(self):
    return self._head == None

  #          
  def add(self,item):
    temp = Node(item) #       
    temp.setNext(self._head) #     next    _head
    self._head = temp # _head        

  #          
  def append(self,item):
    temp = Node(item)
    if self.isEmpty():
      self._head = temp #          
    else:
      current = self._head
      while current.getNext() != None:
        current = current.getNext() #     
      current.setNext(temp) #   current        ,     

  #           
  def search(self,item):
    current = self._head
    founditem = False
    while current != None and not founditem:
      if current.getItem() == item:
        founditem = True
      else:
        current = current.getNext()
    return founditem

  #           
  def index(self,item):
    current = self._head
    count = 0
    found = None
    while current != None and not found:
      count += 1
      if current.getItem() == item:
        found = True
      else:
        current = current.getNext()
    if found:
      return count
    else:
      return -1 #   -1     

  #          
  def remove(self,item):
    current = self._head
    pre = None
    while current!=None:
      if current.getItem() == item:
        if not pre:
          self._head = current.getNext()
        else:
          pre.setNext(current.getNext())
        break
      else:
        pre = current
        current = current.getNext()

  #            
  def insert(self,pos,item):
    if pos <= 1:
      self.add(item)
    elif pos > self.size():
      self.append(item)
    else:
      temp = Node(item)
      count = 1
      pre = None
      current = self._head
      while count < pos:
        count += 1
        pre = current
        current = current.getNext()
      pre.setNext(temp)
      temp.setNext(current)


if __name__=='__main__':
  a=SingleLinkedList()
  for i in range(1,10):
    a.append(i)
  print('     ',a.size())
  a.travel()
  print(a.search(6))
  print(a.index(5))
  a.remove(4)
  a.travel()
  a.insert(4,100)
  a.travel()
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기