特定の単一リンクリストの最初のノードを削除する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