ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อแปลงรายการที่เชื่อมโยงเพียงอย่างเดียวเป็นรายการที่เชื่อมโยงแบบวงกลม
สำหรับสิ่งนี้เราจะได้รับรายชื่อที่เชื่อมโยงโดยลำพัง งานของเราคือการนำองค์ประกอบของรายการนั้นมาแปลงเป็นรายการเชื่อมโยงแบบวงกลม
ตัวอย่าง
#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;
} ผลลัพธ์
Display list: 17 22 13 14 15