ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง array เป็น circular doubly linked list
สำหรับนี้ เราจะได้รับ array งานของเราคือนำสมาชิกของ array ไปแปลงเป็น circular doubly linked list
โปรแกรมตัวอย่าง
#include <iostream>
using namespace std;
// โครงสร้างโหนด doubly linked list
struct node {
int data;
struct node *next;
struct node *prev;
};
// สร้างโหนด
struct node* getNode() {
return ((struct node *)malloc(sizeof(struct node)));
}
// พิมพ์ list
int print_list(struct node *temp) {
struct node *t = temp;
if (temp == NULL)
return 0;
else {
cout << "List: ";
while (temp->next != t) {
cout << temp->data << " ";
temp = temp->next;
}
cout << temp->data;
return 1;
}
}
// แปลง array เป็น linked list
void convert_array(int arr[], int n, struct node **start) {
// ประกาศ pointer ใหม่
struct node *newNode, *temp;
int i;
// ท่องทุกสมาชิก
for (i = 0; i < n; i++) {
newNode = getNode();
newNode->data = arr[i];
if (i == 0) {
*start = newNode;
newNode->prev = *start;
newNode->next = *start;
} else {
// คำนวณโหนดสุดท้าย
temp = (*start)->prev;
temp->next = newNode;
newNode->next = *start;
newNode->prev = temp;
temp = *start;
temp->prev = newNode;
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
struct node *start = NULL;
convert_array(arr, n, &start);
print_list(start);
return 0;
}
ผลลัพธ์
List: 1 2 3 4 5