Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 연결 목록이 순환 연결 목록인지 확인

<시간/>

여기에서 우리는 연결 목록을 확인하는 괭이가 순환 연결 목록인지 여부를 볼 것입니다. 연결 목록이 순환인지 여부를 확인하기 위해 헤더 노드를 다른 변수에 저장한 다음 목록을 순회합니다. 노드의 다음 부분에서 null을 얻으면 순환이 아니고 그렇지 않으면 확인합니다. 다음 노드는 저장된 노드와 동일하거나 동일하지 않은 경우 순환입니다.

예시

#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