ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่สร้าง 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
สรุป
หากคุณมีข้อสงสัยใดๆ ในบทช่วยสอนนี้ โปรดระบุในส่วนความคิดเห็น