Computer >> Máy Tính >  >> Lập trình >> C ++

Tạo danh sách được liên kết từ hai danh sách được liên kết bằng cách chọn phần tử tối đa ở mỗi vị trí trong Chương trình C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tạo một danh sách được liên kết mới từ các danh sách được liên kết đã cho.

Chúng tôi đã cung cấp hai danh sách được liên kết có cùng kích thước và chúng tôi phải tạo một danh sách được liên kết mới từ hai danh sách được liên kết với số lượng tối đa từ hai danh sách được liên kết.

Hãy xem các bước để giải quyết vấn đề.

  • Viết một nút cấu trúc.

  • Tạo hai danh sách được liên kết có cùng kích thước.

  • Lặp lại danh sách được liên kết.

    • Tìm số tối đa từ hai nút danh sách được liên kết.

    • Tạo một nút mới với số lượng tối đa.

    • Thêm nút mới vào danh sách liên kết mới.

  • In danh sách liên kết mới.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node* next;
};
void insertNewNode(Node** root, int item) {
   Node *ptr, *temp;
   temp = new Node;
   temp->data = item;
   temp->next = NULL;
   if (*root == NULL) {
      *root = temp;
   }
   else {
      ptr = *root;
      while (ptr->next != NULL) {
         ptr = ptr->next;
      }
      ptr->next = temp;
   }
}
void printLinkedList(Node* root) {
   while (root != NULL) {
      cout << root->data << " -> ";
      root = root->next;
   }
   cout << "NULL" << endl;
}
Node* generateNewLinkedList(Node* root1, Node* root2) {
   Node *ptr1 = root1, *ptr2 = root2;
   Node* root = NULL;
   while (ptr1 != NULL) {
      int currentMax = ((ptr1->data < ptr2->data) ? ptr2->data : ptr1->data);
      if (root == NULL) {
         Node* temp = new Node;
         temp->data = currentMax;
         temp->next = NULL;
         root = temp;
      }
      else {
         insertNewNode(&root, currentMax);
      }
      ptr1 = ptr1->next;
      ptr2 = ptr2->next;
   }
   return root;
}
int main() {
   Node *root1 = NULL, *root2 = NULL, *root = NULL;
   insertNewNode(&root1, 1);
   insertNewNode(&root1, 2);
   insertNewNode(&root1, 3);
   insertNewNode(&root1, 4);
   insertNewNode(&root2, 3);
   insertNewNode(&root2, 1);
   insertNewNode(&root2, 2);
   insertNewNode(&root2, 4);
   root = generateNewLinkedList(root1, root2);
   printLinkedList(root);
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

3 -> 2 -> 3 -> 4 -> NULL

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.