C++プログラムのリンクリストのMノードの後にNノードを削除します
このチュートリアルでは、 Nを削除する方法を学習します。 Mの後のノード リンクリスト内のノード。
問題を解決するための手順を見てみましょう。
-
リンクリストノードの構造体ノードを記述します。
-
リンクリストをダミーデータで初期化します。
-
Mノードの後にNノードを削除する関数を記述します。
-
ヘッドポインタでポインタを初期化します。
-
リンクリストの最後まで繰り返します。
-
Mノードになるまでポインタを次のノードに移動します。
-
N個のノードを削除します
-
ポインタを次のノードに移動します
-
-
リンクリストを印刷する
例
コードを見てみましょう。
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node *next;
};
void insertNode(Node ** head_ref, int new_data) {
Node* new_node = new Node();
new_node->data = new_data;
new_node->next = (*head_ref);
*head_ref = new_node;
}
void printLinkedList(Node *head) {
Node *temp = head;
while (temp != NULL) {
cout<< temp->data << " -> ";
temp = temp->next;
}
cout << "Null" << endl;
}
void deleteNNodesAfterMNodes(Node *head, int M, int N) {
Node *current = head, *temp;
int count;
while (current) {
// skip M nodes
for (count = 1; count < M && current!= NULL; count++) {
current = current->next;
}
// end of the linked list
if (current == NULL) {
return;
}
// deleting N nodes after M nodes
temp = current->next;
for (count = 1; count <= N && temp != NULL; count++) {
Node *deletingNode = temp;
temp = temp->next;
free(deletingNode);
}
current->next = temp;
current = temp;
}
}
int main() {
Node* head = NULL;
int M = 1, N = 2;
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
insertNode(&head, 4);
insertNode(&head, 5);
insertNode(&head, 6);
insertNode(&head, 7);
insertNode(&head, 8);
insertNode(&head, 9);
cout << "Linked list before deletion: ";
printLinkedList(head);
deleteNNodesAfterMNodes(head, M, N);
cout << "Linked list after deletion: ";
printLinkedList(head);
return 0;
} 出力
上記のコードを実行すると、次の結果が得られます。
Linked list before deletion: 9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> Null Linked list after deletion: 9 -> 6 -> 3 -> Null
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C ++で再帰を使用して、リンクリストの代替ノードを出力します
リンクリストは、要素を連続していないメモリ位置に格納する線形データ構造です。すべての要素には、リンクリストの次の要素へのポインタが含まれています。 例 − この問題では、リンクリストが与えられ、このリンクリストの要素を印刷する必要がありますが、代替要素のみが印刷されます。問題をよりよく理解するために例を見てみましょう。 Input : 2 -> 4 -> 1 -> 67 -> 48 -> 90 Output : 2 -> 1 -> 48 説明 −リンクリストに代替要素を出力します。したがって、1番目、3番目、5番目の要素が印刷されます。
-
Pythonのリンクリストからmノードの後にnノードを削除するプログラム
開始ノードが「head」で、2つの整数mとnを持つリンクリストが与えられたとします。リストをトラバースして、最初のmノードがリストに保持され、最初のmノードが削除された後の次のnノードなどのいくつかのノードを削除する必要があります。リンクリストの最後に到達するまでこれを実行します。ヘッドノードから開始し、変更されたリンクリストが返されます。 リンクリスト構造は-として与えられます Node value : <integer> next : <pointer to next node> したがって、入力が要素=[1、