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

순환 단일 연결 목록을 구현하는 C++ 프로그램

<시간/>

순환 단일 연결 목록은 자체 참조 구조를 사용하여 생성된 노드로 구성된 데이터 구조 유형입니다. 이러한 각 노드는 데이터와 다음 목록 노드에 대한 참조라는 두 부분을 포함합니다.

전체 연결 목록에 액세스하려면 첫 번째 목록 노드에 대한 참조만 필요합니다. 이것은 머리로 알려져 있습니다. 목록의 마지막 노드는 목록의 헤드 또는 첫 번째 노드를 가리킵니다. 이것이 이것이 순환 연결 목록으로 알려진 이유입니다.

순환 단일 연결 리스트를 구현하는 프로그램은 다음과 같다.

예시

#include <iostream>
using namespace std;
struct Node {
   int data;
   struct Node *next;
};
struct Node* head = NULL;
void insert(int newdata) {
   struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data = newdata;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
}
void display() {
   struct Node* ptr;
   ptr = head;
   do {
      cout<<ptr->data <<" ";
      ptr = ptr->next;
   } while(ptr != head);
}
int main() {
   insert(3);
   insert(1);
   insert(7);
   insert(2);
   insert(9);
   cout<<"The circular linked list is: ";
   display();
   return 0;
}

출력

The circular linked list is: 9 2 7 1 3

위의 프로그램에서 Node 구조체는 연결 리스트 노드를 형성합니다. 여기에는 데이터와 다음 연결 목록 노드에 대한 포인터가 포함됩니다. 이것은 다음과 같이 주어집니다.

struct Node {
   int data;
   struct Node *next;
};

insert() 함수는 연결 리스트의 시작 부분에 데이터를 삽입합니다. newnode를 생성하고 newnode의 데이터 필드에 숫자를 삽입합니다. 헤드가 NULL이면 newnode는 자신을 가리키고 그렇지 않으면 순환 연결 목록의 마지막 노드가 newnode를 가리킵니다. 그런 다음 헤드는 목록의 시작, 즉 새 노드를 가리킵니다. 이것은 아래와 같습니다.

void insert(int newdata) {
   struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data = newdata;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
}

display() 함수는 전체 연결 목록을 표시합니다. 첫 번째 ptr은 머리를 가리킵니다. 그런 다음 노드의 모든 데이터 값이 인쇄될 때까지 다음 노드로 계속 전달됩니다. 이것은 아래와 같습니다.

void display() {
   struct Node* ptr;
   ptr = head;
   do {
      cout<< ptr->data <<" ";
      ptr = ptr->next;
   } while(ptr != head);
}

main() 함수에서 먼저 insert()를 호출하여 다양한 값을 순환 연결 목록에 삽입합니다. 그런 다음 연결 목록이 표시됩니다. 이것은 아래와 같습니다.

int main() {
   insert(3);
   insert(1);
   insert(7);
   insert(2);
   insert(9);
   cout<<"The circular linked list is: ";
   display();
   return 0;
}