Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

แปลง Array เป็น Circular Doubly Linked List ใน C++

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง 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