Pythonプログラミング言語は、さまざまなすぐに使用できる実装を備えたオープンソース言語であり、独自性があり、習得が容易です。でも リンクリストの概念をサポートしていません。リンクリストを取得するために別の実装を介してそれを回避する方法があります。この記事では、Pythonでリンクリストを作成する方法を学習します。このブログで取り上げられているトピックは次のとおりです。
さぁ、始めよう!!
拡張と実装のJavaの違い
リンクリストとは何ですか?
リンクリストは、同様のデータ型を持つノードのシーケンスであり、各ノードには1つのデータオブジェクトと次のノードへのポインタが含まれています。
リンクリストは、複数のノードを集めた線形データ構造です。ここでe各要素は、独自のデータと次の要素の場所へのポインタを格納します。リンクリストの最後のリンクはnullを指し、チェーンの終わりを示します。リンクリストの要素は、 ノード 。最初のノードは 頭 。最後のノードが呼び出されますインクルード 尾 。
標準のPythonライブラリにはリンクリストがありません。ノードの概念を使用して、リンクリストのデータ構造の概念を実装できます。
これで、リンクとは何かについて学びました。それでは、リンクリストの実装に移りましょう。
リンクリストの実装
リンクリストを作成するには、ノードオブジェクトを作成し、このノードオブジェクトを使用する別のクラスを作成します。
Nodeクラスを作成するためのコード。
上記のプログラムは、3つのデータ要素を持つリンクリストを作成します。
class Node(object):#クラス変数を初期化するコンストラクタdef __init __(self、data = None、next_node = None):self.data = data self.next_node = next_node #get data def get_data(self):return self.data#次の値を取得defget_next(self):return self.next_node#次のデータを設定def set_next(self、new_next):self.next_node = new_next
リンクリストの実装は、リンクリスト内の次の機能で構成されています
1。 インサート :このメソッドは、リンクリストに新しいノードを挿入します。
2.2。 サイズ :このメソッドは、リンクリストのサイズを返します。
3.3。 探す :このメソッドはデータを含むノードを返します。そうでない場合はエラーが発生します
四。 削除 :このメソッドはデータを含むノードを削除します。そうでない場合はエラーが発生します
リンクリストの方法を見てみましょう
リンクリストのinitメソッド
class LinkedList(object):def __init __(self、head = None):self.head = head
Initメソッドはの初期化に使用されます クラス リストにノードがない場合は変数、noneに設定されます。
インサート:
def insert(self、data):new_node = Node(data)new_node.set_next(self.head)self.head = new_node
この挿入メソッドはデータを取得し、指定されたデータで新しいノードを初期化し、それをリストに追加します。技術的には、リストのどこにでもノードを挿入できますが、最も簡単な方法は、ノードをリストの先頭に配置し、新しいノードを古い先頭に向けることです(他のノードをラインの下にプッシュするようなものです)。
サイズ
#リスト内のノードの総数を返しますdef size(self):current = self.head count = 0 while current:count + = 1 current = current.get_next()return count
sizeメソッドは非常に単純で、基本的にノードが見つからなくなるまでカウントし、見つかったノードの数を返します。このメソッドは、ヘッドノードから開始し、ノードの行を最後まで移動し(最後に到達すると、現在はNoneになります)、表示されたノードの数を追跡します。
探す
#nodeDataを持つリスト内のノードを返します。ノードが存在しない場合はエラーが発生しますdef search(self、nodeData):current = self.head isPresent = False while current and isPresent is False:if current.get_data()== nodeData:isPresent = True else:current = current.get_next()if current is None:raise ValueError( 'Data not present in list')return current
検索は実際にはサイズと非常に似ていますが、ノードのリスト全体をトラバースする代わりに、各ストップで現在のノードに要求されたデータがあるかどうかを確認します。その場合、そのデータを保持しているノードを返します。メソッドがリスト全体を調べてもデータが見つからない場合は、値エラーが発生し、データがリストにないことをユーザーに通知します。
削除
#リンクリストからノードを削除すると、ノードが存在しない場合にエラーが返されますdef delete(self、nodeData):current = self.head previous = None isPresent = False while current and isPresent is False:if current.get_data()== nodeData:isPresent = True else:previous = current current = current.get_next()if current is None:raise ValueError( 'Data not present in list')if previous is None:self.head = current.get_next()else:previous.set_next( current.get_next())
deleteメソッドは、検索と同じ方法でリストをトラバースしますが、現在のノードを追跡することに加えて、deleteメソッドは最後にアクセスされたノードも記憶します。削除が最終的に削除したいノードに到着したとき。それは単にそれを「飛躍」させることによってチェーンからそのノードを削除します。
2つの文字列を比較する方法
つまり、deleteメソッドが削除したいノードに到達すると、最後にアクセスしたノード(「前の」ノード)を調べて、その前のノードのポインターをリセットします。間もなく削除されるノードを指すのではなく。
行の次のノードを指します。削除されている貧弱なノードを指しているノードがないため、リストから効果的に削除されます。
これでこの記事の終わりになり、Pythonはリンクリストの概念を実際にはサポートしていませんが、同様の実装でPythonでリンクリストを作成する方法を学びました。このチュートリアルで共有されているすべてのことを明確に理解していただければ幸いです。
「Pythonのリンクリスト」に関するこの記事が関連していると感じた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社が世界中に広がっています。
私たちはあなたの旅のすべてのステップであなたを助け、なりたい学生や専門家のために設計されたカリキュラムを考え出すためにここにいます 。このコースは、Pythonプログラミングをすぐに開始できるように設計されており、Pythonのコア概念と高度な概念の両方、およびさまざまな概念についてトレーニングします。 お気に入り
ご不明な点がございましたら、「Pythonのリンクリスト」のコメントセクションでお気軽にご質問ください。チームが喜んでお答えします。