特定の単一リンクリストの最初のノードを削除するC++プログラム
リンクリストは、相互に接続された複数のノードを持つ線形データ構造です。各ノードは、データフィールドと次のノードのアドレスの2つのフィールドで構成されています。
単一リンクリストがあり、このリンクリストから最初のノードを削除する必要があると仮定します。たとえば、
入力1 −4→3→2→1
出力 −3→2→1→
説明 −「4」は、指定された単一リンクリストの最初のノードです。最初のノードを削除すると、リンクリストは3→2→1になります。
入力2 −1→2→3→
出力 −2→3→
説明 −最初のノード「1」を削除すると、リンクリストは2→3になります。
この問題を解決するためのアプローチ
最初に、ノードで構成されるリンクリストがあります。各ノードには、次のノードへのデータとアドレスが含まれています。リンクリストにデータを挿入した後、最初のノードを削除する関数を作成します。
したがって、最初にヘッドを指し、ヘッドを次のノードに移動する一時的なポインタを作成します。次に、一時ノードを削除して、リンクリストを返します。
-
関数deleteAthead(node *&head)は、ヘッドへのポインターを取得し、リンクリストの最初のノードを削除します。
-
最初に頭を指す一時的なポインタを作成します。
-
頭が次のノードに移動します。
-
一時ポインタを削除します。
-
リンクリストを返します。
例
#include<iostream> using namespace std; int main(){ class node{ public: int data; node*next; node(int d){ data=d; node*next=NULL; } }; void insertAtFirstNode(node*&head, int data){ node*n= new node(data); n->next= head; head=n; } void print(node*head){ while(head!=NULL){ cout<<head->data<<"->"; head=head->next; } cout<<endl; } void deleteAtFirst(node*&head){ if(head==NULL){ return; } node*temp=head; head= head->next; delete temp; return; } int main(){ node*head= NULL; insertAtFirstNode(head,1); insertAtFirstNode(head,2); insertAtFirstNode(head,3); insertAtFirstNode(head,4); deleteAtFirst(head); print(head); }
出力
上記のコードを実行すると、次のように出力が生成されます
3 → 2 → 1 →
与えられた単一リンクリストは4→3→2→1→なので、最初のノードである4を削除すると、リンクリストは3→2→1→
になります。-
循環単一リンクリストを実装するためのC++プログラム
循環単一リンクリストは、自己参照構造を使用して作成されたノードで構成されるデータ構造の一種です。これらの各ノードには、データと次のリストノードへの参照という2つの部分が含まれています。 リンクリスト全体にアクセスするには、最初のリストノードへの参照のみが必要です。これは頭として知られています。リストの最後のノードは、リストの先頭または最初のノードを指します。これが循環リンクリストとして知られている理由です。 循環単一リンクリストを実装するプログラムは次のとおりです。 例 #include <iostream> using namespace std; struct Node
-
単一リンクリストを実装するC++プログラム
単一リンクリストは、自己参照構造を使用して作成されたノードで構成されるデータ構造の一種です。これらの各ノードには、データと次のリストノードへの参照という2つの部分が含まれています。リンクリスト全体にアクセスするには、最初のリストノードへの参照のみが必要です。これは頭として知られています。リストの最後のノードは何も指していないため、その部分にNULLが格納されます。 単一リンクリストを実装するためのプログラムは次のとおりです。 例 #include <iostream> using namespace std; struct Node { int da