Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm phần tử lớn thứ hai trong danh sách được liên kết trong C ++

Tại đây chúng ta sẽ thấy phần tử lớn thứ hai trong danh sách liên kết. Giả sử có n nút khác nhau bằng số. Vì vậy, nếu danh sách giống như [12, 35, 1, 10, 34, 1], thì phần tử lớn thứ hai sẽ là 34.

Quá trình này tương tự như việc tìm kiếm phần tử lớn thứ hai trong một mảng, chúng tôi sẽ xem qua danh sách và tìm phần tử lớn thứ hai bằng cách so sánh.

Ví dụ

#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);
}

Đầu ra

Second largest element is: 16