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

リンクリストの最後からN番目のノードを印刷するPythonプログラム


リンクリストの最後から特定のノードを出力する必要がある場合は、メソッド「list_length」および「return_from_end」メソッドが定義されています。 「list_length」は、リンクリストの長さを返します。

「return_from_end」メソッドは、リンクリストの最後からn番目の要素を返すために使用されます。

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

 class Node:def __init __(self、data):self.data =data self.next =Noneclass LinkedList_structure:def __init __(self):self.head =None self.last_node =None def add_vals(self、data): self.last_nodeがNoneの場合:self.head =Node(data)self.last_node =self.head else:self.last_node.next =Node(data)self.last_node =self.last_node.nextdef list_length(my_list):my_len =0 curr =my_list.head while curr:curr =curr.next my_len =my_len + 1 return my_lendef return_from_end(my_list、n):l =list_length(my_list)curr =my_list.head for i in range(l --n):curr =curr.next return curr.datamy_instance =LinkedList_structure()my_list =input('リンクリストの要素を入力してください..')。split()for elem in my_list:my_instance.add_vals(int(elem))n =int( input('nの値を入力してください。'))my_result =return_from_end(my_instance、n)print('最後からn番目の要素は次のとおりです:{}'。format(my_result)) 

出力

リンクリストの要素を入力します。453120874nの値を入力します。2最後からn番目の要素は87です。

説明

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

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

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

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

  • 「list_length」という名前のメソッドが定義されています。このメソッドは、リンクリストの長さを決定し、それを出力として返します。

  • 「return_from_end」という名前の別のメソッドが定義されています。これは、リンクリストの最後から「n」の値を返すのに役立ちます。

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

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

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

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

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


  1. Cプログラムのリンクリストの最後からn番目のノードのプログラム

    n個のノードがある場合、タスクはリンクリストの最後からn番目のノードを印刷することです。プログラムは、リスト内のノードの順序を変更してはなりません。代わりに、リンクリストの最後からn番目のノードのみを出力する必要があります。 例 Input -: 10 20 30 40 50 60    N=3 Output -: 40 上記の例では、最初のノードからカウントnノードまでのノードがトラバースされます(10、20、30、40、50、60)。したがって、最後から3番目のノードは40です。 リスト全体をトラバースする代わりに、この効率的なアプローチに従うことができます-

  2. PythonでリンクリストのK番目の最後のノードを見つけるプログラム

    単一リンクリストがあるとすると、k番目の最後のノード(0インデックス)の値を確認する必要があります。これはシングルパスで解決する必要があります。 したがって、入力がnode =[5,4,6,3,4,7]、k =2のようである場合、最後から2番目の(インデックス3)ノードの値は3であるため、出力は3になります。 これを解決するには、次の手順に従います- klast:=ノード 最後:=ノード 0からkの範囲のiの場合、実行 最後:=最後の次 最後の次はnullではありませんが、実行してください 最後:=最後の次 klast:=klastの次