溫馨提示×

c語言雙向鏈表的長度如何計算

小億
130
2023-12-27 15:36:28
欄目: 編程語言

要計算雙向鏈表的長度,可以使用以下算法:

  1. 定義一個變量count并初始化為0,用于計數。
  2. 從鏈表的頭節點開始,依次遍歷鏈表的每個節點。
  3. 每次遍歷一個節點,count加1。
  4. 當遍歷到鏈表的最后一個節點時,count的值即為鏈表的長度。
  5. 返回count作為鏈表的長度。

下面是一個示例代碼:

#include <stdio.h>
#include <stdlib.h>

// 雙向鏈表的節點結構
typedef struct Node {
    int data;
    struct Node *prev; // 前驅節點指針
    struct Node *next; // 后繼節點指針
} Node;

// 計算雙向鏈表的長度
int getLength(Node *head) {
    int count = 0;
    Node *current = head;
    while (current != NULL) {
        count++;
        current = current->next;
    }
    return count;
}

int main() {
    // 創建雙向鏈表
    Node *head = (Node *)malloc(sizeof(Node));
    head->data = 1;
    head->prev = NULL;
    Node *node2 = (Node *)malloc(sizeof(Node));
    node2->data = 2;
    node2->prev = head;
    head->next = node2;
    Node *node3 = (Node *)malloc(sizeof(Node));
    node3->data = 3;
    node3->prev = node2;
    node2->next = node3;
    node3->next = NULL;

    // 計算鏈表的長度
    int length = getLength(head);
    printf("Length of the doubly linked list: %d\n", length);

    // 釋放鏈表內存
    Node *current = head;
    while (current != NULL) {
        Node *temp = current;
        current = current->next;
        free(temp);
    }
    return 0;
}

這段代碼中,我們首先創建了一個包含3個節點的雙向鏈表。然后使用getLength()函數計算鏈表的長度,并將結果打印輸出。最后釋放了鏈表的內存。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女