Python でのリンク リストの実装について

アンスプラッシュの画像

データは、配列などの隣接するメモリ場所には保存されません。そして、リンクされたすべての要素はノードと呼ばれ、ポインターによって接続されます。ヘッドは、リンクのリストの最初のノードです。動的は、関連付けられたリストのサイズです。したがって、デバイス ストレージがなくても、必要な数のノードを持つことができます。2種類のリストがつながっています。ひとつひとつ丁寧にレッスンを見ていきましょう。

単一連結リスト

リンク リストには、次のノードに接続されたリンク リスト内の単一のポインターがあります。リンク リスト内の各ノードについて、データとポインターを格納する必要があります。リンク リストの末尾の次のインジケーターとしての Null には、リンク リストの最終ノードが含まれます。

まず、リンクリストノードが作成されます。Python クラスで簡単にノードを構築できます。クラスには、データと次のノード ポインターが含まれます。

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

class LinkedList:
	def __init__(self):
		self.head = None

class LinkedList:
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node != None:
				last_node = last_node.next
			last_node.next = new_node
		else:
			self.head = new_node

class LinkedList:
	def display(self):
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end='->')
			temp_node = temp_node.next
		print('Null')

class Node:
	def __init__(self, data):
		self.data = data
		self.next = None
class LinkedList:
	def __init__(self):
		self.head = None
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next
			last_node.next = new_node
		else:
			self.head = new_node
	def display(self):
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end='->')
			temp_node = temp_node.next
		print('Null')
if __name__ == '__main__':
	linked_list = LinkedList()
	linked_list.insert(Node(1))
	linked_list.insert(Node(2))
	linked_list.insert(Node(3))
	linked_list.insert(Node(4))
	linked_list.insert(Node(5))
	linked_list.insert(Node(6))
	linked_list.insert(Node(7))
	linked_list.display()

1->2->3->4->5->6->7->Null

二重連結リスト

二重にリンクされたリストには、前のノードに接続されているリンクされたリスト内の 2 つのインジケーターがあります。リンク リストの各ノードについて、データと 2 つのポイントを保存する必要があります。最初のノードはゼロであり、最後のノードの次のポイントはゼロであり、両側のリンクリストの終わりを示します。

二重リンク リストには、1 リンク リストを実装するための同等のメソッドも含まれています。繰り返しますが、同じことを説明するのは面倒です。すべてのステップでコードを調べれば、すぐに理解できます。

前のノード ポインター、データ、および二重リンク リストの次のノード ポインターを含むノードを作成します。

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

class LinkedList:
	def __init__(self):
		self.head = None

class LinkedList:
	def insert(self, new_node):
		if self.head:
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next
			new_node.prev = last_node
			last_node.next = new_node

class LinkedList:
	def display(self):
		print("Normal Order: ", end='')
		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.next
		print()
		print("Reverse Order: ", end='')
		last_node = self.head
		while last_node.next != None:
			last_node = last_node.next
		temp_node = last_node
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.prev
		print()

提案された投稿

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

技術的な背景がなくてもサイバーセキュリティに移行するためのヒント。

技術的な背景がなくてもサイバーセキュリティに移行するためのヒント。

2022 年に、私は非技術職からサイバーセキュリティの職に転職しました。私はドイツ語で最初の学位を取得しました 、あなたがショックを受け、私がどのようにしてドイツ語への移行に成功したかに興味を持っているのはわかりますが、それはたまたまです。

関連記事

「マリアナ海溝の公開: 深淵の恐るべき隠された真実を明らかにする」

「マリアナ海溝の公開: 深淵の恐るべき隠された真実を明らかにする」

はじめに:勇敢な読者の皆さん、地球の最も暗い深みへ私たちを導く旅へようこそ。このブログでは、マリアナ海溝の謎に満ちた世界を掘り下げ、その隠された秘密を明らかにし、その表面の下にある骨も凍るような真実を明らかにします。

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

新しいキャリアへの転職は、一人でやろうとすると非常に困難になる可能性があります。あなたと同じ学習レベルにあり、同様の目標、粘り強さ、意欲を共有する責任パートナーを見つけることが重要です。

ジョーダン・ニーリー殺害と「愛国的」人種差別の問題

米国は、人種差別的な行動と善良な米国人であることを同一視しないという重要な一歩を踏み出すことができるだろうか?

ジョーダン・ニーリー殺害と「愛国的」人種差別の問題

[警告: このエッセイには、ジョーダン ニーリー殺害の犯人を賞賛する人々のスクリーンショットが含まれています。] 法執行当局はついに、そしておそらくはしぶしぶではありましたが、ジョーダン ニーリーを死ぬまで首を絞めた男、ダニエル ペニーをその殺人罪で起訴しました。

無限の命

大人になると、世界はそういうもので、あなたの人生はただ世界の中で生きていくだけで、決して命を危険にさらすことはなく、決められた道をたどって最後には死ぬだけで、失敗しないように努めるのだと言われがちです。壁を打ちすぎてはいけません。しかし、それは非常に限られた人生です。