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

สร้าง Linked List ใหม่จากสอง Linked List ที่กำหนดด้วยค่าสูงสุดที่แต่ละโหนดใน C++

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่สร้าง linked list ใหม่จาก linked list ที่กำหนดให้

เรามี linked list สองตัวที่มีขนาดเท่ากัน และเราต้องสร้าง linked list ใหม่จากสอง linked list โดยใช้ตัวเลขสูงสุดจากโหนดของสอง linked list

ลองดูขั้นตอนในการแก้ปัญหา

  • เขียน struct node

  • สร้าง linked list สองตัวที่มีขนาดเท่ากัน

  • วนลูปผ่าน linked list

    • หาตัวเลขสูงสุดจากโหนดของสอง linked list

    • สร้างโหนดใหม่ด้วยตัวเลขสูงสุด

    • เพิ่มโหนดใหม่เข้า linked list ใหม่

  • พิมพ์ linked list ใหม่

ตัวอย่าง

ลองดูโค้ด

#include <bits/stdc++.h> 
using namespace std; 

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

void insertNewNode(Node** root, int data) { 
    Node *ptr, *temp; 
    temp = new Node; 
    temp->data = data; 
    temp->next = NULL; 
    if (*root == NULL) { 
        *root = temp; 
    } else { 
        ptr = *root; 
        while (ptr->next != NULL) { 
            ptr = ptr->next; 
        } 
        ptr->next = temp; 
    } 
} 

Node* getNewLinkedList(Node* root1, Node* root2) { 
    Node *ptr1 = root1, *ptr2 = root2, *ptr; 
    Node *root = NULL, *temp; 
    while (ptr1 != NULL) { 
        temp = new Node; 
        temp->next = NULL; 
        if (ptr1->data < ptr2->data) { 
            temp->data = ptr2->data; 
        } else { 
            temp->data = ptr1->data; 
        } 
        if (root == NULL) { 
            root = temp; 
        } else { 
            ptr = root; 
            while (ptr->next != NULL) { 
                ptr = ptr->next; 
            } 
            ptr->next = temp; 
        } 
        ptr1 = ptr1->next; 
        ptr2 = ptr2->next; 
    } 
    return root; 
} 

void printLinkedList(Node* root) { 
    while (root != NULL) { 
        cout << root->data << "->"; 
        root = root->next; 
    } 
    cout << "NULL" << endl; 
} 

int main() { 
    Node *root1 = NULL, *root2 = NULL, *root = NULL; 
    insertNewNode(&root1, 1); 
    insertNewNode(&root1, 2); 
    insertNewNode(&root1, 3); 
    insertNewNode(&root1, 4); 
    cout << "First Linked List: "; 
    printLinkedList(root1); 
    insertNewNode(&root2, 0); 
    insertNewNode(&root2, 5); 
    insertNewNode(&root2, 2); 
    insertNewNode(&root2, 6); 
    cout << "Second Linked List: "; 
    printLinkedList(root2); 
    root = getNewLinkedList(root1, root2); 
    cout << "New Linked List: "; 
    printLinkedList(root); 
    return 0; 
}

ผลลัพธ์

หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้

First Linked List: 1->2->3->4->NULL 
Second Linked List: 0->5->2->6->NULL 
New Linked List: 1->5->3->6->NULL

สรุป

หากคุณมีข้อสงสัยใดๆ ในบทช่วยสอนนี้ โปรดระบุในส่วนความคิดเห็น