C++程式:查詢雙向連結串列的大小
在這個問題中,我們給定一個雙向連結串列。我們的任務是建立一個C++程式來查詢雙向連結串列的大小。
雙向連結串列是一種特殊的連結串列,與單向連結串列相比,它可以更容易地向前和向後導航。以下是一些理解雙向連結串列概念的重要術語。
連結 - 連結串列的每個連結都可以儲存一個稱為元素的資料。
下一個 - 連結串列的每個連結都包含一個指向下一個連結的連結,稱為Next。
前一個 - 連結串列的每個連結都包含一個指向前一個連結的連結,稱為Prev。
連結串列 - 連結串列包含指向第一個連結(稱為First)和最後一個連結(稱為Last)的連線連結。
雙向連結串列的表示 -
問題描述 - 我們將得到上述型別的雙向連結串列。我們將找到它的長度(大小)。
讓我們舉個例子來理解這個問題,
輸入
the above linked list A <-> B <-> C.
輸出
3
解決方案方法
要查詢雙向連結串列的大小,我們需要遍歷雙向連結串列並使用長度變數跟蹤長度。
演算法
初始化 - length = 0,*temp = head
- 步驟1 - 遍歷列表,即執行直到temp != NULL。
- 步驟1.1 - 增加長度,length++
- 步驟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
廣告