ในปัญหานี้ เราได้รับรายการที่เชื่อมโยงเป็นสองเท่า งานของเราคือสร้าง โปรแกรมเพื่อค้นหาขนาดของรายการที่เชื่อมโยงแบบทวีคูณใน 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