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

C++のリンクリストでピーク要素を見つけます


このチュートリアルでは、指定されたリンクリストからピーク要素を見つけるプログラムを作成します。

ピーク要素は、周囲の要素よりも大きい要素です。問題を解決するための手順を見てみましょう。

  • リンクリストの構造体ノードを作成します。

  • ダミーデータを使用してリンクリストを作成します。

  • リンクリストが空であるか長さが1であるかなどの基本ケースを確認します。

  • 最初の要素をpreviousという変数に格納します。

  • リンクリストを繰り返し処理します。

    • 現在の要素が前の要素および次の要素よりも大きいかどうかを確認します。

    • 上記の条件が満たされている場合に戻ります。

    • 前の要素を更新します。

  • 結果を印刷する

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void insertNewNode(struct Node** head_ref, int new_data) {
   struct Node* new_node = new Node;
   new_node->data = new_data;
   new_node->next = (*head_ref);
   *head_ref = new_node;
}
int findPeakElement(struct Node* head) {
   if (head == NULL) {
      return -1;
   }
   if (head->next == NULL) {
      return head->data;
   }
   int prev = head->data;
   Node *current_node;
   for (current_node = head->next; current_node->next != NULL; current_node = current_node->next) {
      if (current_node->data > current_node->next->data && current_node->data > prev) {
         return current_node->data;
      }
      prev = current_node->data;
   }
   if (current_node->data > prev) {
      return current_node->data;
   }
   return -1;
}
int main() {
   struct Node* head = NULL;
   insertNewNode(&head, 7);
   insertNewNode(&head, 4);
   insertNewNode(&head, 5);
   insertNewNode(&head, 2);
   insertNewNode(&head, 3);
   cout << findPeakElement(head) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

5

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++の単一リンクリスト内のすべての素数ノードの積

    n個のノードが与えられ、タスクはリンクリスト内のすべての素数ノードの積を出力することです。プライムノードは、カウント位置としてプライム値を持つノードです。 入力 10 20 30 40 50 出力 4,00,000 説明 − 10はプライムではないインデックス値1にあるため、スキップされます。素数であるインデックス値2で20に移動すると、考慮されます。同様に、40と50はプライムインデックスの場所にあります。 製品 − 20 * 40 * 50 =4,00,000 上の図で、赤い色のノードはプライムノードを表しています 以下で使用するアプローチは次のとおりです 一時

  2. C++で二重リンクリストのサイズを見つけるプログラム

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