Trong vấn đề này, chúng tôi được cung cấp một danh sách được liên kết đơn lẻ. Nhiệm vụ của chúng tôi là tìm các phần tử nhỏ nhất và lớn nhất trong danh sách liên kết đơn.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào
linked List : 5 -> 2 -> 7 -> 3 ->9 -> 1 -> 4
Đầu ra
Smallest element = 1 Largest element = 9
Phương pháp tiếp cận giải pháp
Một giải pháp đơn giản cho vấn đề là sử dụng bằng cách duyệt qua nút từng nút của danh sách liên kết. Trước đó, chúng ta sẽ khởi tạo maxElement và minElement thành giá trị của phần tử đầu tiên, tức là head -> data. Sau đó, chúng tôi sẽ duyệt qua phần tử danh sách liên kết theo phần tử. Và sau đó so sánh giá trị của nút hiện tại với maxElement và lưu trữ giá trị lớn hơn trong biến maxElement. Thực hiện tương tự để lưu trữ các giá trị nhỏ hơn trong minElement. Khi quá trình truyền tải được thực hiện xong, hãy in cả hai giá trị.
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
Ví dụ
#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; }
Đầu ra
Smallest element in the linked list is : 1 Largest element in the linked list is : 9