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

C++の単一リンクリストで最小および最大の要素を検索します


この問題では、単一リンクリストが与えられます。私たちの仕事は、単一のリンクリストから最小要素と最大要素を見つけることです。

問題を理解するために例を見てみましょう

入力

linked List : 5 -> 2 -> 7 -> 3 ->9 -> 1 -> 4

出力

Smallest element = 1
Largest element = 9

ソリューションアプローチ

この問題の簡単な解決策は、リンクリストをノードごとにトラバースすることで使用することです。これに先立ち、maxElementとminElementを最初の要素の値、つまりhead->dataに初期化します。次に、リンクリストを要素ごとにトラバースします。次に、現在のノードの値をmaxElementと比較し、大きい方の値をmaxElement変数に格納します。 minElementに小さい値を格納する場合も、同じように実行します。トラバーサルが完了したら、両方の値を出力します。

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void printLargestSmallestLinkedList(struct Node* head) {
   int maxElement = INT_MIN;
   int minElement = INT_MAX;
   while (head != NULL) {
      if (minElement > head->data)
         minElement = head->data;
      if (maxElement < head->data)
         maxElement = head->data;
      head = head->next;
   }
   cout<<"Smallest element in the linked list is : "<<minElement<<endl;
   cout<<"Largest element in the linked list is : "<<maxElement<<endl;
}
void push(struct Node** head, int data) {
   struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
   newNode->data = data;
   newNode->next = (*head);
   (*head) = newNode;
}
int main() {
   struct Node* head = NULL;
   push(&head, 5);
   push(&head, 2);
   push(&head, 7);
   push(&head, 3);
   push(&head, 9);
   push(&head, 1);
   push(&head, 4);
   printLargestSmallestLinkedList(head);
   return 0;
}

出力

Smallest element in the linked list is : 1
Largest element in the linked list is : 9

  1. C++でソートおよびローテーションされたリンクリストのローテーションをカウントします

    リンクリストが表示されます。リストは最初にソートされ、次にK個のノードでローテーションされます。目標は、Kの値を見つけることです。K個のノードだけ回転する入力としてリンクリストを以下に示す場合- それならオリジナルは-だったに違いない ここでKは2であることがわかります。入力リンクリストは、元のソートされたリンクリストの2ノードのローテーションです。 例を挙げて理解しましょう。 入力 −リスト:5→7→9→1→3 出力 リンクリストの要素は次のとおりです。5791 3 ソートおよびローテーションされたリンクリストのローテーション数は-3 説明 −元のソート済み

  2. C++の単一リンクリスト内の交互の奇数ノードと偶数ノード

    単一のリンクリストは、2つの部分を含む線形データ構造です。1つはデータで、もう1つはリスト内の次の要素へのポインタです。 代替の奇数および偶数の単一リンクリスト は、一方のノードに偶数のデータがあり、もう一方のノードに奇数のデータメンバーがあるリンクリストです。 この問題では、事前定義された単一リンクリストの要素を、代替の奇数および偶数の単一リンクリストを定義する2つの方法のいずれかで再配置する必要があります。 2つの方法があります-リンクリストの最初の要素が偶数の場合、次の要素は奇数であり、次の要素、つまり3番目の要素は再び偶数である必要があります。もう1つのタイプは、最初の要素が奇数