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

ソートされた循環単一リンクリストを実装するC++プログラム


データ構造では、リンクリストはデータ要素の線形コレクションです。リストの各要素またはノードは、データと次のノードへの参照の2つの項目で構成されます。最後のノードにはnullへの参照があります。リンクリストへのエントリポイントは、リストの先頭と呼ばれます。

リスト内の各ノードは、コンテンツと、リスト内の次のノードへのポインターまたは参照を、単一リンクリストに格納します。単一リンクリストには、前のノードへのポインタや参照は格納されません。

並べ替えられた単一リンクリストであるため、リンクリスト内のデータアイテムは常に並べ替えられたままになります。

これは、Sorted Circularly SinglyLinkedListを実装するためのC++プログラムです

アルゴリズム

リストにノードを挿入する関数createnode()を開始します。リストが空かどうかをチェックします。リストが空の場合は、ノードを最初の要素として配置し、ヘッドを更新します。リストが空でない場合は、newnodeを作成し、newnodeのデータフィールドに番号を挿入します。これで、リンクリストがソートされたままになるようにnewnodeが挿入されます。最後に挿入された場合、newnodeはヘッドを指します。 newnodeが最初に挿入された場合、リンクリストはそこから始まります。EndBegin関数display()は、n個のノードを持つリストコンテンツを出力します。c=0を初期化します。開始アドレスを使用してポインタ変数を初期化します(c <=n )ノード情報を出力しますポインタ変数を更新しますIncrement c.End 

サンプルコード

 #include  using namespace std; struct nod {int d; nod * n;} * p =NULL、* head =NULL、* q =NULL、* np =NULL; int c =0; void createnode(int n){np =new nod; np-> d =n; np-> n =NULL; if(c ==0){head =np; p=頭; p->n=頭; c ++; } else if(c ==1){p=頭; q =p; if(np-> d  d){np-> n =p;ヘッド=np; p-> n =np; } else if(np-> d> p-> d){p-> n =np; np->n=頭; } c ++; } else{p=頭; q =p; if(np-> d  d){np-> n =p;ヘッド=np; do {p =p-> n; } while(p-> n!=q); p->n=頭; } else if(np-> d> p-> d){while(p-> n!=head &&q-> d  d){q =p; p =p-> n; if(p-> n ==head){p-> n =np; np->n=頭; } else if(np-> d  d){q-> n =np; np-> n =p;壊す; }}}}} void display(int i){nod * t =head; int c =0; while(c <=i){cout < d <<"\ t"; t =t-> n; c ++; }} int main(){int i =0、n、a; cout<<"ノードの数を入力してください\n"; cin>> n; while(i > a; createnode(a); i ++; } cout<<"ソートされた循環単一リンクリスト"< 

出力

nodes5のnoを入力しますnode6の値を入力しますnode4の値を入力しますnode7の値を入力しますnode3の値を入力しますnode3の値を入力します 
  1. C++で二重リンクリストのサイズを見つけるプログラム

    この問題では、二重にリンクされたリストが与えられます。私たちのタスクは、C++で二重リンクリストのサイズを見つけるプログラムを作成することです。 二重リンクリストは特殊なタイプのリンクリストであり、単一リンクリストと比較して、順方向と逆方向の両方の方法で簡単にナビゲーションできます。以下は、二重リンクリストの概念を理解するための重要な用語です。 リンク-リンクリストの各リンクには、要素と呼ばれるデータを格納できます。 次へ-リンクリストの各リンクには、次と呼ばれる次のリンクへのリンクが含まれています。 前-リンクリストの各リンクには、前と呼ばれる前のリンクへのリンクが含ま

  2. 隣接リストを実装するC++プログラム

    グラフの隣接リスト表現は、リンクリスト表現です。この表現では、リストの配列があります。配列のサイズはVです。ここで、Vは頂点の数です。つまり、V個の異なるリストを格納する配列があると言えます。リストヘッダーが頂点uの場合、uの隣接するすべての頂点を保持することを意味します。 隣接リスト表現の複雑さ この表現は、無向グラフの場合はO(V + 2E)を取り、有向グラフの場合はO(V + E)を取ります。エッジの数を増やすと、必要なスペースも増えます。 入力 : 出力 : アルゴリズム add_edge(adj_list、u、v) 入力 :エッジ{u、v}のuとv、およ