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

Pythonでn個のノードを持つリンクリストを作成し、逆順に表示する方法

循環リンクリスト(Circular Linked List)を作成し、それを逆順に表示するには、まず「Node」クラスを定義する必要があります。

循環リスト内のデータ要素を逆順に表示するには、データを反転処理するためのメソッドを別途定義します。「Node」クラスには2つの属性があります。1つはノードに格納されるデータ(data)、もう1つはリンクリスト上の次のノードへの参照(next)です。循環リンクリストでは、先頭(head)と末尾(rear)が互いに隣接しており、全体が円形につながっているのが特徴です。そのため、最後のノードに「NULL」は存在しません。

さらに、初期化関数を持つ「linked_list」クラスを作成し、headを「None」で初期化します。

以下に具体的な実装例を示します。

サンプルコード

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

class linked_list:
   def __init__(self):
      self.head = None
   
   def add_data(self,my_data):
      new_node = Node(my_data)
      new_node.next = self.head
      self.head = new_node
   
   def reverse(self):
      prev = None
      current = self.head
      while(current is not None):
         next = current.next
         current.next = prev
         prev = current
         current = next
      self.head = prev
   
   def print_it(self):
      temp = self.head
      while(temp):
         print(temp.data)
         temp = temp.next

my_list = linked_list()
my_list.add_data(47)
my_list.add_data(89)
my_list.add_data(34)
my_list.add_data(11)

print("The list is : ")
my_list.print_it()
print("The list is being reversed")
my_list.reverse()
print("The reversed list is : ")
my_list.print_it()

出力

The list is :
11
34
89
47
The list is being reversed
The reversed list is :
47
89
34
11

解説

  • 「Node」クラスを作成します。
  • 必要な属性を持つ「linked_list」クラスを作成します。
  • リンクリストにデータを追加するための「add_data」メソッドを定義します。
  • リンクリストに格納されたデータを逆順に並べ替える「reverse」メソッドを定義します。
  • リンクリストのデータをコンソールに表示する「print_it」メソッドを定義します。
  • 「linked_list」クラスのオブジェクトを生成し、データを追加します。
  • 「reverse」メソッドを使ってリストを反転させます。
  • 「print_it」メソッドを使って結果をコンソールに表示します。
  1. C言語で単方向リンクリストを使って数値を逆順に表示する方法

    リンクリスト(連結リスト)とは リンクリストは動的メモリ割り当てを利用するデータ構造で、複数の「ノード」が連なった集合体です。各ノードはデータ部分とリンク部分(次のノードへのポインタ)の2つの要素で構成されています。 リンクリストの種類 C言語で扱われる主なリンクリストには、以下の4種類があります。 単方向リンクリスト 双方向リンクリスト 循環単方向リンクリスト 循環双方向リンクリスト 単方向リンクリストの構造 下の図は、単方向リンクリストの構造を示したものです。各ノードがデータと次ノードへのポインタを持ち、末尾ノードのポインタはNULLを指します。 数値を逆順に表示するCプログラム 以

  2. Pythonで連結リストのm個のノードを保持した後にn個のノードを削除するプログラム

    始点ノードが「head」である連結リストと、2つの整数 m と n が与えられたとします。リストを走査しながら、先頭から数えて m 個のノードを残した直後の n 個のノードを削除する処理を、連結リストの末尾に到達するまで繰り返します。処理は head ノードから開始し、最後に変更後の連結リストを返します。今回扱う連結リストの構造は次のように定義されています。Node value : <整数値> next : <次のノードへのポインタ>例えば、入力が elements = [1, 2, 3, 4, 5, 6, 7, 8]、m = 3、n = 1 の場合、出