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

นับโหนดในรายการเชื่อมโยงแบบวงกลมใน C++


เราได้รับรายการเชื่อมโยงแบบวงกลมกับโหนด และงานคือการคำนวณจำนวนโหนดที่มีอยู่ในรายการที่เชื่อมโยงแบบวงกลม

รายการที่เชื่อมโยงแบบวงกลมเป็นรูปแบบหนึ่งของรายการที่เชื่อมโยง โดยองค์ประกอบแรกชี้ไปที่องค์ประกอบสุดท้าย และองค์ประกอบสุดท้ายชี้ไปที่องค์ประกอบแรก ทั้งรายการที่เชื่อมโยงแบบเดี่ยวและรายการที่เชื่อมโยงแบบทวีคูณสามารถทำเป็นรายการที่เชื่อมโยงแบบวงกลมได้

ในโปรแกรมด้านล่าง เรากำลังใช้งานรายการเชื่อมโยงแบบเดี่ยวเป็นรายการเชื่อมโยงแบบวงกลมเพื่อคำนวณจำนวนโหนดในนั้น

นับโหนดในรายการเชื่อมโยงแบบวงกลมใน C++

ตัวอย่าง

Input − nodes-: 20, 1, 2, 3, 4, 5
Output − count of nodes are-: 6
Input − nodes-: 20, 1, 2, 3, 4, 5, 7, 8, 9, 12
Output − count of nodes are-: 10

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้ −

  • สร้างโครงสร้างสำหรับรายการที่เชื่อมโยงอย่างเดียวรวมถึงที่อยู่และข้อมูลที่โหนดเก็บไว้

  • สร้างฟังก์ชัน push() ที่จะใช้เพื่อแทรกข้อมูลลงในโหนด

  • ในโหนดสุดท้าย ให้เก็บที่อยู่ของโหนดแรกเพื่อสร้างฟังก์ชันรายการที่เชื่อมโยงโดยลำพังเป็นรายการที่เชื่อมโยงแบบวงกลม

  • สร้างฟังก์ชันการนับที่จะนับจำนวนโหนดทั้งหมดที่อยู่ในรายการที่เชื่อมโยงแบบวงกลม

ตัวอย่าง

#include <stdio.h>
#include <stdlib.h>
/* Defining a node */
struct node {
   int data;
   struct node* next;
};
// Inserting node in Circular list
void push(struct node** head_ref, int data){
   struct node* ptr1 = (struct node*)malloc(sizeof(struct node));
   struct node* temp = *head_ref;
   ptr1->data = data;
   ptr1->next = *head_ref;
   // going to the last node to insert new element.
   if (*head_ref != NULL){
      while (temp->next != *head_ref){
         temp = temp->next;
      }
      temp->next = ptr1;
   } else{
      ptr1->next = ptr1; //for first node
   }
   *head_ref = ptr1;
}
// Function to count the number of nodes
int count_fun(struct node* head){
   struct node* temp = head;
   int result = 0;
   if (head != NULL){
      do {
         temp = temp->next;
         result++;
      } while (temp != head);
   }
   return result;
}
int main(){
   /* Initializing the list as empty */
   struct node* head = NULL;
   push(&head, 10);
   push(&head, 20);
   push(&head, 30);
   push(&head, 40);
   printf("count of nodes are: %d", count_fun(head));
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

count of nodes are: 4