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

Tìm nút lớn nhất trong danh sách được liên kết gấp đôi trong C ++

Trong vấn đề này, chúng tôi được cung cấp một danh sách liên kết kép LL. Nhiệm vụ của chúng tôi là tìm nút lớn nhất trong Danh sách được liên kết gấp đôi .

Hãy lấy một ví dụ để hiểu vấn đề,

Input : linked-list = 5 -> 2 -> 9 -> 8 -> 1 -> 3
Output : 9

Phương pháp tiếp cận giải pháp

Một cách tiếp cận đơn giản để giải quyết vấn đề là duyệt qua danh sách được liên kết và nếu giá trị dữ liệu của max lớn hơn dữ liệu của maxVal. Sau khi duyệt qua danh sách được liên kết, chúng tôi sẽ trả về dữ liệu các nút macVal.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#include <iostream>
using namespace std;
struct Node{
   int data;
   struct Node* next;
   struct Node* prev;
};
void push(struct Node** head_ref, int new_data){
   struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->prev = NULL;
   new_node->next = (*head_ref);
   if ((*head_ref) != NULL)
      (*head_ref)->prev = new_node;
   (*head_ref) = new_node;
}
int findLargestNodeInDLL(struct Node** head_ref){
   struct Node *maxVal, *curr;
   maxVal = curr = *head_ref;
   while (curr != NULL){
      if (curr->data > maxVal->data)
         maxVal = curr;
      curr = curr->next;
   }
   return maxVal->data;
}
int main(){
   struct Node* head = NULL;
   push(&head, 5);
   push(&head, 2);
   push(&head, 9);
   push(&head, 1);
   push(&head, 3);
   cout<<"The largest node in doubly linked-list is "<<findLargestNodeInDLL(&head);
   return 0;
}

Đầu ra

The largest node in doubly linked-list is 9