Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เขียนฟังก์ชันนับจำนวนครั้งที่ int ปรากฏใน Linked List ใน C++


ในโจทย์นี้ เราได้รับ linked list งานของเราคือสร้างฟังก์ชันที่จะสามารถนับจำนวนครั้งที่จำนวนที่กำหนดปรากฏใน linked list ได้

ตัวอย่าง

อินพุต

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

เอาต์พุต

3

คำอธิบาย - จำนวน 10 ปรากฏ 3 ครั้งใน linked list

วิธีแก้ปัญหานี้ง่ายมาก แค่ traverse linked list และเพิ่มตัวนับเมื่อค่าของโหนดปัจจุบันเท่ากับจำนวนที่กำหนด

การวนลูปผ่านโหนดของ linked list สามารถทำได้โดยใช้ iteration และ recursion ทั้งคู่ เราจะแสดงทั้งสองวิธี

โปรแกรมแสดงโซลูชันแบบ Iteration

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

ผลลัพธ์

The count of 10 in the linked list is 3

โปรแกรมแสดงโซลูชันแบบ Recursion

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

ผลลัพธ์

The count of 10 in the linked list is 3