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 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告