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

Pythonの指定された位置の前にリンクリストに新しい要素を挿入するプログラム


要素のリストがあるとします。これらの要素は、単一リンクリストに格納されます。値posと値valもあります。リンクリストのインデックス位置の前にvalを挿入する必要があります。

したがって、入力がnums =[1,5,3,6,8] pos =3 val =7のような場合、出力は[1,5,3,7,6,8]

になります。

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

  • new:=valと同じ値でリンクリストノードを作成します

  • posが0と同じ場合、

    • 次の新しい:=list_head

    • 新規返品

  • temp:=list_head

  • tempがnullでなく、posが1と同じではない場合、do

    • temp:=次のtemp

    • pos:=pos-1

  • 次の新しい:=次の臨時雇用者

  • next of temp:=new

  • list_headを返す

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

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next

   def make_list(elements):
      head = ListNode(elements[0])
      for element in elements[1:]:
         ptr = head
         while ptr.next:
            ptr = ptr.next
         ptr.next = ListNode(element)
      return head

   def print_list(head):
      ptr = head
      print('[', end = "")
      while ptr:
         print(ptr.val, end = ", ")
         ptr = ptr.next
      print(']')

   def solve(list_head, pos, val):
      new = ListNode(val)
      if pos == 0:
         new.next = list_head
         return new

      temp = list_head
      while temp and pos != 1:
         temp = temp.next
         pos -= 1
      next = temp.next
      temp.next = new

   return list_head

nums = [1,5,3,6,8]
pos = 3
val = 7

list_head = make_list(nums)
list_head = solve(list_head, pos, val)
print_list(list_head)

入力

[1,5,3,6,8], 3, 7

出力

[1, 5, 3, 7, 6, 8, ]

  1. Pythonで単一リンクリストの中間ノードを見つけるプログラム

    単一リンクリストノードがあるとすると、中間ノードの値を見つける必要があります。そして、2つの中間ノードがある場合、2番目のノードを返します。これをシングルパスで解決する必要があります。 したがって、入力が[5,9,6,4,8,2,1,4,5,2]の場合、出力は2になります。 これを解決するために、次の手順に従います- p:=ノード d:=0、l:=0 ノードがnullでない場合は、実行してください dが2と同じでない場合、 node:=ノードの次 l:=l + 1、d:=d + 1 それ以外の場合 p:=pの次、d:=0

  2. ソートされたリストに要素を挿入するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、ソートされた順序を変更せずにリストに要素を挿入する必要があります 以下で説明するように、2つのアプローチがあります- アプローチ1:強引な方法 例 def insert(list_, n):    # search    for i in range(len(list_)):       if list_[i] > n:          index = i