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

ตรวจสอบว่ารายการที่เชื่อมโยงเป็นรายการที่เชื่อมโยงแบบวงกลมใน C++


ในที่นี้เราจะดูว่า จอบ เช็คลิงค์ลิสต์เป็นวงกลมหรือเปล่า เพื่อตรวจสอบว่ารายการที่เชื่อมโยงเป็นวงกลมหรือไม่ เราจะเก็บโหนดส่วนหัวไว้ในตัวแปรอื่น จากนั้นข้ามรายการ หากเราได้รับค่าว่างที่ส่วนถัดไปของโหนดใดๆ โหนดนั้นจะไม่เป็นวงกลม มิฉะนั้น เราจะตรวจสอบ โหนดถัดไปจะเหมือนกับโหนดที่เก็บไว้หรือไม่ ถ้าใช่ โหนดถัดไปจะเป็นโหนดแบบวงกลม

ตัวอย่าง

#include <iostream>
using namespace std;
class Node{
   public:
   int data;
   Node *next;
};
Node* getNode(int data){
   Node *newNode = new Node;
   newNode->data = data;
   newNode->next = NULL;
   return newNode;
}
bool isCircularList(Node *start){
   if(start == NULL)
      return true;
   Node *node = start->next;
   while(node != NULL && node != start){
      node = node->next;
   }
   if(node == start)
      return true;
      return false;
}
int main() {
   Node *start = getNode(10);
   start->next = getNode(20);
   start->next->next = getNode(30);
   start->next->next->next = getNode(40);
   start->next->next->next->next = getNode(50);
   start->next->next->next->next->next = start;
   if (isCircularList(start))
      cout << "The list is circular list";
   else
      cout << "The list is not circular list";
}

ผลลัพธ์

The list is circular list