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

ค้นหาความยาวของรายการที่เชื่อมโยง (วนซ้ำและเรียกซ้ำ) ใน C ++


ที่นี่เราจะมาดูวิธีค้นหาความยาวของรายการที่เชื่อมโยงโดยใช้วิธีการวนซ้ำและแบบเรียกซ้ำ หากระบุส่วนหัว เราต้องทำตามขั้นตอนเหล่านี้เพื่อให้ได้ความยาว

  • สำหรับการทำซ้ำ -

    • เป็นผู้นำของรายการ จนกว่าตัวชี้ปัจจุบันจะไม่เป็นโมฆะ ไปที่โหนดถัดไปและเพิ่มจำนวน

  • สำหรับวิธีการแบบเรียกซ้ำ -

    • ส่งส่วนหัวเป็นอาร์กิวเมนต์ เงื่อนไขพื้นฐานคือเมื่ออาร์กิวเมนต์เป็นโมฆะ จากนั้นคืนค่า 0 มิฉะนั้น ให้ป้อนรายการซ้ำในรายชื่อและส่งโหนดถัดไปจากโหนดปัจจุบัน คืนค่า 1 + ความยาวของรายการย่อย

ตัวอย่าง

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
   Node* next;
};
void append(struct Node** start, int data) {
   struct Node* new_node = new Node;
   new_node->data = data;
   new_node->next = (*start);
   (*start) = new_node;
}
int count_recursive(Node* start) {
   if (start == NULL)
      return 0;
   return 1 + count_recursive(start->next);
}
int count_iterative(Node* start) {
   int count = 0;
   Node* current = start;
   while (current != NULL) {
      count++;
      current = current->next;
   }
   return count;
}
int main() {
   Node* start = NULL;
   append(&start, 1);
   append(&start, 3);
   append(&start, 1);
   append(&start, 2);
   append(&start, 1);
   cout << "Node count using iterative approach: " << count_iterative(start) << endl;
   cout << "Node count using recursion: " << count_recursive(start);
}

ผลลัพธ์

Node count using iterative approach: 5
Node count using recursion: 5