Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 연결 목록에서 연속 노드의 절대 차이가 1인지 확인하십시오.

<시간/>

각 노드에 정수 값이 포함된 단일 연결 목록이 있다고 가정합니다. 연속된 두 노드 간의 절대 차이가 1인지 확인해야 합니다.

따라서 입력이 start_node->5->6->7->8->7->6->5->4와 같으면 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • temp :=start_node
  • temp가 null이 아닌 동안 do
    • temp.link가 null과 같으면
      • 루프에서 나오다
    • if |(temp) 값 - (temp.link) 값| 1과 같지 않은 경우
      • 거짓을 반환
    • temp :=temp.link
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

import math
class link_node:
   def __init__(self, value):
      self.value = value
      self.link = None
def create_node(value):
   temp = link_node(value)
   temp.value = value
   temp.link = None
   return temp
def make_list(elements):
   head = link_node(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.link:
         ptr = ptr.link
      ptr.next = link_node(element)
   return head
def solve(start_node):
   temp = start_node
   while (temp):
      if (temp.link == None):
         break
      if (abs((temp.value) - (temp.link.value)) != 1) :
         return False
      temp = temp.link
   return True
start_node = make_list([5, 6, 7, 8, 7, 6, 5, 4])
print(solve(start_node))

입력

[5, 6, 7, 8, 7, 6, 5, 4]

출력

True