ในปัญหานี้ เราได้รับรายการที่เชื่อมโยงเป็นสองเท่า งานของเราคือสร้าง โปรแกรมเพื่อค้นหาขนาดของรายการที่เชื่อมโยงแบบทวีคูณใน C++
Doubly Linked List เป็นรายการที่เชื่อมโยงชนิดพิเศษซึ่งการนำทางสามารถทำได้ทั้งสองวิธี ทั้งไปข้างหน้าและข้างหลังอย่างง่ายดายเมื่อเปรียบเทียบกับรายการที่เชื่อมโยงเดี่ยว ต่อไปนี้คือข้อกำหนดที่สำคัญในการทำความเข้าใจแนวคิดของรายการที่เชื่อมโยงแบบทวีคูณ
-
ลิงค์ - แต่ละลิงค์ของรายการที่เชื่อมโยงสามารถเก็บข้อมูลที่เรียกว่าองค์ประกอบได้
-
ถัดไป - แต่ละลิงก์ของรายการที่เชื่อมโยงมีลิงก์ไปยังลิงก์ถัดไปที่เรียกว่า ถัดไป
-
ก่อนหน้า - แต่ละลิงค์ของรายการที่เชื่อมโยงมีลิงค์ไปยังลิงค์ก่อนหน้าที่เรียกว่าก่อนหน้า
-
LinkedList - รายการที่เชื่อมโยงประกอบด้วยการเชื่อมต่อไปยังลิงค์แรกที่เรียกว่าลิงค์แรกและไปยังลิงค์สุดท้ายที่เรียกว่าล่าสุด
การเป็นตัวแทนของรายการที่เชื่อมโยงเป็นทวีคูณ -
คำอธิบายปัญหา − เราจะได้รับรายชื่อที่เชื่อมโยงแบบทวีคูณของประเภทข้างต้น และเราจะหาขนาด (ความยาว) ของมันได้
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
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