C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定された単一リンクリストの先頭にノードを挿入するプログラムをC++で記述します


リンクリストは、相互に接続された複数のノードを持つ線形データ構造です。各ノードは、データフィールドと次のノードのアドレスの2つのフィールドで構成されています。

単一リンクリストを指定したと仮定します。タスクは、指定されたリンクリストの先頭にノードを挿入することです。たとえば、

入力-1 −1→2→3→4

指定されたリンクリストの先頭または先頭に「5」を挿入します。

出力 −5→1→2→3→4

説明 −リンクリストの先頭にノードを挿入すると、リンクリストが5→1→2→3→4として出力されます。

この問題を解決するためのアプローチ

最初に、ノードで構成されるリンクリストを提供しました。各ノードには、次のノードへのデータとアドレスが含まれています。

すでにノードを作成しているので、ヘッドノードのアドレスをパラメータとして取り、リンクリストの先頭に挿入しなければならないデータと先頭にデータを挿入する関数を作成します。次に、新しく挿入されたノードに頭を向けます。

  • 関数insertAthead(node *&head、int data)は、ヘッドノードのアドレスと挿入する必要のあるデータを取得します。

  • 新しいノードを作成し、そのノードにデータを挿入します。

  • 新しく作成したノードにヘッドを移動します。

  • リンクリストを印刷します。

#include<iostream>
using namespace std;
class node{
   public:
      int data;
      node*next;
      node(int d);
      data=d;
      next= NULL;
   }
};
void insertAthead(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;
   }
}
int main(){
   node*head= NULL;
   insertAthead(head,5);
   insertAthead(head,2);
   insertAthead(head,8);
   insertAthead(head,3);
   print(head);
}

出力

上記のコードを実行すると、次のように出力が生成されます

3→ 8→ 2→ 5 →

リンクリストの先頭にノード3、8、2、5を挿入すると、-3→8→2→5→。

として出力が生成されます。
  1. 特定の単一リンクリストを循環リストに変換するPythonプログラム

    単一リンクリストを循環リンクリストに変換する必要がある場合は、「convert_to_circular_list」という名前のメソッドを定義して、最後の要素が最初の要素を指すようにし、それによって本質的に循環させます。 以下は同じのデモンストレーションです- 例 class Node:    def __init__(self, data):       self.data = data       self.next = None class LinkedList_struct:    d

  2. 二重リンクリストの先頭に新しいノードを挿入するPythonプログラム

    二重リンクリストの先頭に新しいノードを挿入する必要がある場合は、「Node」クラスを作成する必要があります。このクラスには、ノードに存在するデータ、リンクリストの次のノードへのアクセス、およびリンクリストの前のノードへのアクセスの3つの属性があります。 以下は同じのデモンストレーションです- 例 class Node:    def __init__(self, my_data):       self.prev = None       self.data = my_data     &nb