二重リンクリストの最後から新しいノードを削除するPythonプログラム
二重リンクリストの最後からノードを削除する必要がある場合は、「Node」クラスを作成する必要があります。このクラスには、ノードに存在するデータ、リンクリストの次のノードへのアクセス、およびリンクリストの前のノードへのアクセスの3つの属性があります。
以下は同じのデモンストレーションです-
例
class Node:
def __init__(self, my_data):
self.prev = None
self.data = my_data
self.next = None
class double_list:
def __init__(self):
self.head = None
self.tail = None
def add_data(self, my_data):
new_node = Node(my_data)
if(self.head == None):
self.head = self.tail = new_node;
self.head.previous = None;
self.tail.next = None;
else:
self.tail.next = new_node;
new_node.previous = self.tail;
self.tail = new_node;
self.tail.next = None;
def print_it(self):
curr = self.head
if (self.head == None):
print("The list is empty")
return
print("The nodes in the doubly linked list are :")
while curr != None:
print(curr.data)
curr = curr.next
def delete_from_end(self):
if(self.head == None):
return;
else:
if(self.head != self.tail):
self.tail = self.tail.previous
self.tail.next = None;
else:
self.head = self.tail = None;
my_instance = double_list()
print("Elements are being added to the doubly linked list")
my_instance.add_data(10)
my_instance.add_data(24)
my_instance.add_data(54)
my_instance.add_data(77)
my_instance.add_data(92)
my_instance.print_it()
while(my_instance.head != None):
my_instance.delete_from_end();
print("The list after deleting the element from the end is : ");
my_instance.print_it(); 出力
Elements are being added to the doubly linked list The nodes in the doubly linked list are : 10 24 54 77 92 The list after deleting the element from the end is : The nodes in the doubly linked list are : 10 24 54 77 The list after deleting the element from the end is : The nodes in the doubly linked list are : 10 24 54 The list after deleting the element from the end is : The nodes in the doubly linked list are : 10 24 The list after deleting the element from the end is : The nodes in the doubly linked list are : 10 The list after deleting the element from the end is : The list is empty
説明
- 「Node」クラスが作成されます。
- 必要な属性を持つ別のクラスが作成されます。
- 「add_data」という名前のメソッドが定義されています。これは、二重リンクリストにデータを追加するために使用されます。
- 循環リンクリストのノードを表示する「print_it」という名前の別のメソッドが定義されています。
- 「delete_from_end」という名前の別のメソッドが定義されています。このメソッドは、ノードを最後から削除します。つまり、「テール」ノードであり、前のノードを循環リンクリストのテールノードにします。
- 「double_list」クラスのオブジェクトが作成され、そのオブジェクトでメソッドが呼び出されて、二重リンクリストの先頭からノードが削除されます。
- 「init」メソッドが定義されており、二重にリンクされたリストのルート、ヘッド、およびテールノードがNoneになります。
- リストが繰り返され、リンクリストの最後から空になるまですべてのノードが削除されます。
- これは、「print_it」メソッドを使用してコンソールに表示されます。
-
Cプログラムのリンクリストの最後からn番目のノードのプログラム
n個のノードがある場合、タスクはリンクリストの最後からn番目のノードを印刷することです。プログラムは、リスト内のノードの順序を変更してはなりません。代わりに、リンクリストの最後からn番目のノードのみを出力する必要があります。 例 Input -: 10 20 30 40 50 60 N=3 Output -: 40 上記の例では、最初のノードからカウントnノードまでのノードがトラバースされます(10、20、30、40、50、60)。したがって、最後から3番目のノードは40です。 リスト全体をトラバースする代わりに、この効率的なアプローチに従うことができます-
-
Pythonでリンクリストのノードを削除する
いくつかの要素を持つリンクリストがあるとします。私たちのタスクは、リストから特定のノードを削除する関数を作成することです。したがって、リストが1→3→5→7→9のようで、3を削除すると、1→5→7→9になります。 削除するノードを指すポインタ「ノード」があるとすると、ノードを削除するにはこれらの操作を実行する必要があります- node.val =node.next.val node.next =node.next.next 例(Python) 理解を深めるために、次の実装を見てみましょう- class ListNode: def __init__(se