Computer >> Máy Tính >  >> Lập trình >> C ++

Chuyển đổi danh sách liên kết đơn lẻ thành danh sách liên kết tròn trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình chuyển đổi một danh sách được liên kết đơn lẻ thành danh sách được liên kết vòng tròn.

Đối với điều này, chúng tôi sẽ được cung cấp một danh sách liên kết duy nhất. Nhiệm vụ của chúng ta là lấy các phần tử của danh sách đó và chuyển nó thành một danh sách liên kết vòng tròn.

Ví dụ

#include <bits/stdc++.h>
//node structure of linked list
struct Node {
   int data;
   struct Node* next;
};
//converting singly linked list
//to circular linked list
struct Node* circular(struct Node* head){
   struct Node* start = head;
   while (head->next != NULL)
      head = head->next;
   //assigning start to the head->next node
   //if head->next points to NULL
   head->next = start;
   return start;
}
void push(struct Node** head, int data){
   //creation of new node
   struct Node* newNode = (struct Node*)malloc
   (sizeof(struct Node));
   //putting data in new node
   newNode->data = data;
   newNode->next = (*head);
   (*head) = newNode;
}
//displaying the elements of circular linked list
void print_list(struct Node* node){
   struct Node* start = node;
   while (node->next != start) {
      printf("%d ", node->data);
      node = node->next;
   }
   printf("%d ", node->data);
}
int main(){
   struct Node* head = NULL;
   push(&head, 15);
   push(&head, 14);
   push(&head, 13);
   push(&head, 22);
   push(&head, 17);
   circular(head);
   printf("Display list: \n");
   print_list(head);
   return 0;
}

Đầu ra

Display list:
17 22 13 14 15