📜  如何在 C++ 中遍历链表(1)

📅  最后修改于: 2023-12-03 15:38:13.993000             🧑  作者: Mango

如何在 C++ 中遍历链表

在 C++ 中,链表是一种非常常见的数据结构。在处理链表时,遍历整个列表是一个基本的操作。本文将介绍如何在 C++ 中遍历链表。

定义链表

在 C++ 中,链表通常使用指针来实现。我们可以定义一个节点结构体来表示链表的每个节点,并使用一个指针指向下一个节点。例如,下面的代码定义了一个简单的链表节点结构体:

struct ListNode {
    int val;        // 节点的值
    ListNode* next; // 指向下一个节点的指针
};

使用这个结构体,我们可以定义一个链表头指针,表示整个链表的起始位置。例如:

ListNode* head = nullptr; // 初始为空链表
遍历链表

遍历链表的方法通常使用循环,从链表头开始逐个遍历节点,并对每个节点执行相应的操作,直到到达链表尾部。

例如,下面的代码展示了如何遍历一个链表,并依次输出每个节点的值:

void traverseList(ListNode* head) {
    ListNode* p = head;
    while (p != nullptr) {
        cout << p->val << " ";
        p = p->next;
    }
}

这段代码使用了一个指针 p 来遍历整个链表。初始时,p 指向链表的头节点 head。然后,我们使用一个 while 循环遍历链表,每次将 p 指向下一个节点。

p 指向 nullptr 时,表示已经到达链表的尾部,循环结束。这时我们就可以对整个链表进行遍历了。

其他操作

除了遍历链表,我们还可以在链表中执行其他操作,例如插入节点、删除节点、反转链表等。这些操作需要使用链表节点之间的指针来实现。

例如,下面的代码展示了如何在链表的头部插入一个新节点:

void insertNode(ListNode*& head, int val) {
    ListNode* newNode = new ListNode{val, head};
    head = newNode;
}

这段代码使用了一个引用 & 来传递链表头指针。然后,它创建了一个新节点,并将它的 next 指针指向链表的头部。最后,我们将链表的头指针指向新节点,从而将新节点插入链表的头部。

总结

在 C++ 中,遍历链表是一项基本操作。我们可以使用循环和指针来遍历整个链表,并执行相应的操作。另外,我们还可以在链表中插入和删除节点,反转链表等。理解链表的基本操作对于编写高效的 C++ 程序是非常重要的。