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

更新於: 2020年9月17日

517 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告