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

Viết một hàm đếm số lần một số nguyên đã cho xuất hiện trong Danh sách được Liên kết trong C ++

Trong vấn đề này, chúng tôi được cung cấp một danh sách liên kết. Nhiệm vụ của chúng tôi là tạo một hàm có thể đếm số lần một số nhất định xuất hiện trong danh sách được liên kết.

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

Đầu vào

Linked list = 10-> 50 -> 10 -> 20 -> 100 -> 10, int = 10

Đầu ra

3

Giải thích - số 10 xuất hiện 3 lần trong danh sách liên kết.

Giải pháp cho vấn đề này rất đơn giản, chỉ cần xem qua danh sách được liên kết và tăng một bộ đếm giá trị nút hiện tại bằng số đã cho.

Việc lặp qua các nút của danh sách được liên kết có thể được thực hiện bằng cách sử dụng phép lặp cũng như đệ quy và chúng tôi đang minh họa cả hai phương pháp để giải quyết vấn đề

Chương trình minh họa giải pháp bằng cách sử dụng lặp lại,

Ví dụ

#include <iostream>
using namespace std;
class Node {
   public:
   int data;
   Node* next;
};
void push(Node** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int countInt(Node* head, int search_for) {
   Node* current = head;
   int intCount = 0;
   while (current != NULL) {
      if (current->data == search_for)
         intCount++;
      current = current->next;
   }
   return intCount;
}
int main() {
   Node* head = NULL;
   push(&head, 10);
   push(&head, 40);
   push(&head, 10);
   push(&head, 50);
   push(&head, 20);
   push(&head, 90);
   push(&head, 10);
   cout<<"The count of 10 in the linked list is "<<countInt(head, 10);
   return 0;
}

Đầu ra

Tổng số 10 trong danh sách được liên kết là 3

Chương trình minh họa giải pháp sử dụng đệ quy,

Ví dụ

#include <iostream>
using namespace std;
int intCount = 0;
class Node {
   public:
   int data;
   Node* next;
};
void push(Node** head_ref, int new_data) {
   Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int countInt(struct Node* head, int key){
   if (head == NULL)
   return intCount;
   if (head->data == key)
   intCount++;
   return countInt(head->next, key);
}
int main() {
   Node* head = NULL;
   push(&head, 10);
   push(&head, 40);
   push(&head, 10);
   push(&head, 50);
   push(&head, 20);
   push(&head, 90);
   push(&head, 10);
   cout<<"The count of 10 in the linked list is "<<countInt(head, 10);
   return 0;
}

Đầu ra

The count of 10 in the linked list is 3