Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのリンクリストで連続ノードの絶対差が1であるかどうかを確認します


各ノードに整数値が含まれる単一リンクリストがあるとします。 2つの連続するノード間の絶対差が1であるかどうかを確認する必要があります。

したがって、入力がstart_node-> 5-> 6-> 7-> 8-> 7-> 6-> 5-> 4の場合、出力はTrueになります。

これを解決するには、次の手順に従います-

  • temp:=start_node
  • tempがnullでない場合は、
    • temp.linkがnullと同じ場合、
      • ループから抜け出す
    • if |(temp)の値-(temp.link)の値| 1と同じではない場合、
      • Falseを返す
    • temp:=temp.link
  • Trueを返す

理解を深めるために、次の実装を見てみましょう-

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

  1. Python –リスト内の連続した部門

    リスト内の連続する除算を見つける必要がある場合、リストの要素を反復処理し、「/」演算子を使用して結果を判別するメソッドが定義されます。 以下は同じのデモンストレーションです- 例 def consec_division(my_list):    my_result = my_list[0]    for idx in range(1, len(my_list)):       my_result /= my_list[idx]    return my_result my_list = [2200

  2. Pythonのリンクリストからmノードの後に​​nノードを削除するプログラム

    開始ノードが「head」で、2つの整数mとnを持つリンクリストが与えられたとします。リストをトラバースして、最初のmノードがリストに保持され、最初のmノードが削除された後の次のnノードなどのいくつかのノードを削除する必要があります。リンクリストの最後に到達するまでこれを実行します。ヘッドノードから開始し、変更されたリンクリストが返されます。 リンクリスト構造は-として与えられます Node    value : <integer>    next : <pointer to next node> したがって、入力が要素=[1、