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

โปรแกรมหาขนาดของ Doubly Linked List ใน C++


ในปัญหานี้ เราได้รับรายการที่เชื่อมโยงเป็นสองเท่า งานของเราคือสร้าง โปรแกรมเพื่อค้นหาขนาดของรายการที่เชื่อมโยงแบบทวีคูณใน C++

Doubly Linked List เป็นรายการที่เชื่อมโยงชนิดพิเศษซึ่งการนำทางสามารถทำได้ทั้งสองวิธี ทั้งไปข้างหน้าและข้างหลังอย่างง่ายดายเมื่อเปรียบเทียบกับรายการที่เชื่อมโยงเดี่ยว ต่อไปนี้คือข้อกำหนดที่สำคัญในการทำความเข้าใจแนวคิดของรายการที่เชื่อมโยงแบบทวีคูณ

  • ลิงค์ - แต่ละลิงค์ของรายการที่เชื่อมโยงสามารถเก็บข้อมูลที่เรียกว่าองค์ประกอบได้

  • ถัดไป - แต่ละลิงก์ของรายการที่เชื่อมโยงมีลิงก์ไปยังลิงก์ถัดไปที่เรียกว่า ถัดไป

  • ก่อนหน้า - แต่ละลิงค์ของรายการที่เชื่อมโยงมีลิงค์ไปยังลิงค์ก่อนหน้าที่เรียกว่าก่อนหน้า

  • LinkedList - รายการที่เชื่อมโยงประกอบด้วยการเชื่อมต่อไปยังลิงค์แรกที่เรียกว่าลิงค์แรกและไปยังลิงค์สุดท้ายที่เรียกว่าล่าสุด

การเป็นตัวแทนของรายการที่เชื่อมโยงเป็นทวีคูณ -

โปรแกรมหาขนาดของ Doubly Linked List ใน C++

คำอธิบายปัญหา − เราจะได้รับรายชื่อที่เชื่อมโยงแบบทวีคูณของประเภทข้างต้น และเราจะหาขนาด (ความยาว) ของมันได้

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

the above linked list A <-> B <-> C.

ผลลัพธ์

3

แนวทางการแก้ปัญหา

ในการหาขนาดของรายการที่เชื่อมโยงแบบทวีคูณ เราจำเป็นต้องสำรวจรายการที่เชื่อมโยงแบบทวีคูณและติดตามความยาวด้วยค่าความยาวที่สามารถระบุได้

อัลกอริทึม

เริ่มต้น − ความยาว =0, *อุณหภูมิ =หัว

  • ขั้นตอนที่ 1 − สำรวจรายการเช่นทำจนถึง temp !=NULL.
    • ขั้นตอนที่ 1.1 − เพิ่มความยาว ความยาว++
    • ขั้นตอนที่ 1.2 − อัปเดตตัวชี้ temp =temp -> next
  • ขั้นตอนที่ 2 − ความยาวการพิมพ์

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;
struct doublyLL {
   char val;
   struct doublyLL *next;
   struct doublyLL *prev;
};
void insertNode(struct doublyLL** head_ref, int value){
   struct doublyLL* new_node = new doublyLL;
   new_node->val = value;
   new_node->next = (*head_ref);
   new_node->prev = NULL;
   if ((*head_ref) != NULL)
      (*head_ref)->prev = new_node ;
      (*head_ref) = new_node;
}
int calcDLLSize(struct doublyLL *temp) {
   int length = 0;
   while (temp != NULL){
      temp = temp->next;
      length++;
   }
   return length;
}
int main(){
   struct doublyLL* head = NULL;
   insertNode(&head, 'A');
   insertNode(&head, 'H');
   insertNode(&head, 'E');
   insertNode(&head, 'K');
   insertNode(&head, 'M');
   insertNode(&head, 'S');
   cout<<"The size of Doubly Linked List is "<<calcDLLSize(head);
   return 0;
}

ผลลัพธ์

The size of Doubly Linked List is 6