ホームページ  >  記事  >  バックエンド開発  >  Pythonの単一リンクリストにノードを挿入して出力するにはどうすればよいですか? (コード例)

Pythonの単一リンクリストにノードを挿入して出力するにはどうすればよいですか? (コード例)

青灯夜游
青灯夜游オリジナル
2019-03-18 11:56:287903ブラウズ

Pythonの単一リンクリストにノードを挿入および出力するにはどうすればよいですか?次の記事は、単一リンク リストとは何か、および単一リンク リストに対して挿入や出力などの非常に基本的な操作を実行する方法を理解するのに役立ちます。

Pythonの単一リンクリストにノードを挿入して出力するにはどうすればよいですか? (コード例)

単一リンクリストとは何ですか?

まず、単結合リストを理解する前に、ノードとは何かを理解する必要があります。

ノードはリンク リストの構成要素であり、次の 2 つの部分で構成されます:

1. データ部分: データを含めるために使用されます

2. アドレス部分: に使用されます。 point to next ノードの場所を指すポインタ。

単一リンク リストでは、各ノードのアドレス部分に次のノードの位置に関する情報が含まれており、これにより一連のチェーンまたはリンクが形成されます。リンクされたリストの最初のノードはヘッド ポインターによって追跡され、最後のノードは None を指します。

これをよりよく理解するために、下の図を見てみましょう:

Pythonの単一リンクリストにノードを挿入して出力するにはどうすればよいですか? (コード例)

注: 上の図では、最後の要素 1 は None を指しています。これらのノードは互いに連続して描画されていますが、実際には連続したメモリ位置に存在する場合とそうでない場合があります。

単一リンクリストにノードを挿入および出力するにはどうすればよいですか?

1. 単一リンク リストの作成

まず、単一リンク リストを作成するためのノードを作成する必要があります。これを行うには、data と nextNode プロパティを使用して Node クラスを作成します。前に述べたように、data 属性にはデータが含まれ、nextNode は単にリンクされたリスト内の次のノードを指します。 nextNode のデフォルト値を None に設定します。これを行うには、ゲッター メソッドとセッター メソッドを使用できます。

Node クラスが作成されたので、次は LinkedList クラスを作成します。これには属性が 1 つだけあり、頭です。デフォルトでは、これは「なし」を指します。ヘッダーが「None」を指している場合は、リンクされたリストが空であることを意味します。リンク リスト内のノードの数を追跡するには、LinkedList クラスに size 属性を追加し、デフォルトで 0 に設定します。

2. ノードの挿入

LinkedList クラスのメソッドです。新しいノードはリンク リストのどこにでも挿入できますが、コーディングをシンプルかつ効率的に保つために、常に新しいノードをリンク リストの先頭に追加します。つまり、先頭は常に最後に追加されたノードを指します。 。

新しいノードをリストの末尾に追加する場合、リストの末尾を見つけて追加するという追加の作業を実行する必要があります。これは無駄な操作です。ただし、これは、最後のノードを指す別のポインター (テール ポインターと呼びます) を維持する場合に実行できます。

ここでは前者の方法、つまりリンクリストの先頭にノードを挿入する方法を紹介します。

リンク リストに 7 を追加する必要があるとします。次の手順を実行する必要があります。

# ノード オブジェクトを作成します。7 はデータを表し、次のノードがポイントします。ヘッド ノードへ

● ヘッド ポインタをこの新しいノードにポイントします

最後に、size 属性を 1 だけ増やします。挿入が成功した場合は、True を返します。これは良い習慣です。つまり、ユーザーは何が起こったのかを知っています。

3. 出力ノード

LinkedListクラスのメソッドです。リンクされたリスト内のすべてのノードのデータを出力するには、一度に 1 つのノードを反復処理して、各ノードのデータ部分を出力する必要があります。

実装コード:

class Node:
   def __init__(self,data,nextNode=None):
       self.data = data
       self.nextNode = nextNode
   def getData(self):
       return self.data
   def setData(self,val):
       self.data = val
   def getNextNode(self):
       return self.nextNode
   def setNextNode(self,val):
       self.nextNode = val
class LinkedList:
   def __init__(self,head = None):
       self.head = head
       self.size = 0
   def getSize(self):
       return self.size
   def addNode(self,data):
       newNode = Node(data,self.head)
       self.head = newNode
       self.size+=1
       return True
       
   def printNode(self):
       curr = self.head
       while curr:
           print(curr.data)
           curr = curr.getNextNode()
myList = LinkedList()
print("Inserting")
print(myList.addNode(5))
print(myList.addNode(15))
print(myList.addNode(25))
print("Printing")
myList.printNode()
print("Size")
print(myList.getSize())

単一リンクリストの長所と短所は何ですか?

利点:

● 挿入と削除が簡単な動的データ構造です。要素を移動します。次のポインタを更新するだけで問題は解決します。

● スタックとキューのデータ構造は、リンク リストを使用して簡単に実装できます。

欠点

● 次のポインタが追加のメモリを占有します。

#●ランダムアクセスはできません。特定のノードに到達するには、リンク リストを最初からたどる必要があります。

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がPythonの単一リンクリストにノードを挿入して出力するにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。