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

C++のリンクリストで2番目に大きい要素を検索する


ここでは、リンクリストで2番目に大きい要素が表示されます。数値を持つn個の異なるノードがあるとします。したがって、リストが[12、35、1、10、34、1]のような場合、2番目に大きい要素は34になります。

このプロセスは、配列内で2番目に大きい要素を見つけるのと似ています。リストをトラバースし、比較して2番目に大きい要素を見つけます。

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node *next;
};
void prepend(Node** start, int new_data) {
   Node* new_node = new Node;
   new_node->data = new_data;
   new_node->next = NULL;
   if ((*start) != NULL){
      new_node->next = (*start);
      *start = new_node;
   }
   (*start) = new_node;
}
int secondLargestElement(Node *start) {
   int first_max = INT_MIN, second_max = INT_MIN;
   Node *p = start;
   while(p != NULL){
      if (p->data > first_max) {
         second_max = first_max;
         first_max = p->data;
      }else if (p->data > second_max)
         second_max = p->data;
         p = p->next;
   }
   return second_max;
}
int main() {
   Node* start = NULL;
   prepend(&start, 15);
   prepend(&start, 16);
   prepend(&start, 10);
   prepend(&start, 9);
   prepend(&start, 7);
   prepend(&start, 17);
   cout << "Second largest element is: " << secondLargestElement(start);
}

出力

Second largest element is: 16

  1. C++の循環リンクリストのノードの合計

    この問題では、循環リンクリストが表示されます。私たちのタスクは、循環リンクリストのノードの合計を見つけるプログラムを作成することです。 リンクリストのすべてのノード値を追加するだけです。 いくつかの重要な定義 リンクリストは一連のデータ構造であり、リンクを介して相互に接続されています。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 では、問題を理解するために例を見てみましょう。 入力 14 ->

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

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