C ++を使用して、特定の単一リンクリストの最後からK番目のノードを検索します
リンクリストは、相互に接続された複数のノードを持つ線形データ構造です。各ノードは、データフィールドと次のノードのアドレスの2つのフィールドで構成されます。単一リンクリストを指定したと仮定します。タスクは、指定された単一リンクリストの最後からk番目のノードを見つけることです。たとえば、
入力 −
1→2→3→4→7→8→9 K= 4
出力 −
Node from the 4th Position is − 4
説明 −指定された単一リンクリストでは、最後から「4番目」のノードが「4」であるため、出力を「4」として返します。
この問題を解決するためのアプローチ
最初に、ノードで構成されるリンクリストを提供しました。各ノードには、次のノードへのデータとアドレスが含まれています。したがって、最後からk番目のノードを見つけるために、最初にリンクリストの先頭を指す2つのポインターを取得します。
リンクリストを繰り返しながら、一方のポインタを「高速」と言って移動し、もう一方のポインタを「高速」ポインタが最後に到達しなくなるまで移動します。
-
関数kthNodefromTheEnd(node * head、int pos)は、ヘッドノードへのポインターと位置をパラメーターとして受け取り、ノードを最後から返します。
-
最初は先頭にある「遅い」と「速い」の2つのポインタを見てみましょう。
-
リンクリストを繰り返し処理し、高速ポインタを移動します。
-
「速い」ポインタは「遅い」より2ステップ進んでいるので、「速い」が最後に達するまで両方のポインタを動かしてみましょう。
-
ここで、最後からk番目のノードを指すslowの値を返します。
例
#include<iostream> using namespace std; class node{ public: int data; node*next; node(int d){ data=d; next=NULL; } }; void insertAthead(node*&head,int d){ node*n= new node(d); n->next= head; head=n; } void printList(node*head){ while(head!=NULL){ cout<<head->data<<"-->"; head= head->next; } } void kthFromtheEnd(node*head, int k){ node*slow= head; node*fast= head; for(int i=0;i<k;i++){ fast= fast->next; } while(fast!=NULL){ slow= slow->next; fast= fast->next; } cout<<"Node from the "<<k<<"th position is"<<slow->data<<endl; } int main(){ node*head= NULL; insertAthead(head,2); insertAthead(head,4); insertAthead(head,5); insertAthead(head,6); insertAthead(head,7); printList(head); cout<<endl; kthFromtheEnd(head,4); return 0; }
出力
上記のコードを実行すると、次のように出力が生成されます
Node from the 4th position is: 6
説明 −指定されたリンクリストは7→6→5→4→2→であり、k番目の値は「4」です。したがって、最後から4番目のノードは「6」なので、「6」を返します。
-
C++を使用してリンクリストの最初のノードを削除します
リンクリストを指定したら、最初の要素を削除して、新しいリストの先頭へのポインタを返す必要があります。 Input : 1 -> 2 -> 3 -> 4 -> 5 -> NULL Output : 2 -> 3 -> 4 -> 5 -> NULL Input : 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL Output : 4 -> 6 -> 8 -> 33 -> 67 -> NULL 与えられた問題では、リストの最初のノードを削除し、頭を2番
-
C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます
四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr