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

リンクリストの真ん中のノードを印刷するPythonプログラム


リンクリストの真ん中の要素を印刷する必要がある場合は、「print_middle_val」という名前のメソッドが定義されています。このメソッドは、リンクリストをパラメーターとして受け取り、真ん中の要素を取得します。

以下は同じのデモンストレーションです-

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

class LinkedList_structure:
   def __init__(self):
      self.head = None
      self.last_node = None

   def add_vals(self, data):
      if self.last_node is None:
         self.head = Node(data)
         self.last_node = self.head
      else:
         self.last_node.next = Node(data)
         self.last_node = self.last_node.next

def print_middle_val(my_list):
   curr = my_list.head
   my_len = 0
   while curr:
      curr = curr.next
      my_len = my_len + 1

   curr = my_list.head
   for i in range((my_len - 1)//2):
      curr = curr.next

   if curr:
      if my_len % 2 == 0:
         print('The two middle elements are {} and {}'.format(curr.data, curr.next.data))
      else:
         print('The middle-most element is {}.'.format(curr.data))
   else:
      print('The list is empty')

my_instance = LinkedList_structure()

my_list = input('Enter the elements of the linked list... ').split()
for elem in my_list:
   my_instance.add_vals(int(elem))

print_middle_val(my_instance)

出力

Enter the elements of the linked list... 56 23 78 99 34 11
The two middle elements are 78 and 99

説明

  • 「Node」クラスが作成されます。

  • 必要な属性を持つ別の「LinkedList_structure」クラスが作成されます。

  • 最初の要素、つまり「head」を「None」に初期化するために使用される「init」関数があります。

  • スタックに値を追加するのに役立つ「add_vals」という名前のメソッドが定義されています。

  • 「print_middle_val」という名前の別のメソッドが定義されています。これは、リンクリストの中間値をコンソールに表示するのに役立ちます。

  • 「LinkedList_structure」のインスタンスが作成されます。

  • リンクリストに要素が追加されます。

  • 要素がコンソールに表示されます。

  • このリンクリストで「print_middle_val」メソッドが呼び出されます。

  • 出力はコンソールに表示されます。


  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でリンクリストのノードを削除する

    いくつかの要素を持つリンクリストがあるとします。私たちのタスクは、リストから特定のノードを削除する関数を作成することです。したがって、リストが1→3→5→7→9のようで、3を削除すると、1→5→7→9になります。 削除するノードを指すポインタ「ノード」があるとすると、ノードを削除するにはこれらの操作を実行する必要があります- node.val =node.next.val node.next =node.next.next 例(Python) 理解を深めるために、次の実装を見てみましょう- class ListNode:    def __init__(se