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