📌  相关文章
📜  数据结构示例-查找单向链表中最大和最小值节点(1)

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

数据结构示例-查找单向链表中最大和最小值节点

介绍

单向链表是一种常见的线性数据结构,由若干个节点构成,每个节点包含一个数据元素和一个指向下一个节点的指针。本文将介绍如何在单向链表中查找最大和最小值节点。

实现

我们可以先定义一个节点结构体来表示单向链表的节点:

struct Node {
    int value;
    Node* next;
};

接着,我们可以编写一个函数来遍历链表,同时维护最大和最小值节点的指针。代码如下:

void findMinMax(Node* head, Node** minNode, Node** maxNode) {
    *minNode = head;
    *maxNode = head;
    Node* p = head;
    while (p != nullptr) {
        if (p->value < (*minNode)->value) {
            *minNode = p;
        }
        if (p->value > (*maxNode)->value) {
            *maxNode = p;
        }
        p = p->next;
    }
}

findMinMax函数接受一个头结点指针head、以及可修改的最小值节点指针minNode和最大值节点指针maxNode。我们将minNode和maxNode的初始值均设为head,然后遍历整个链表,通过比较当前节点的value和minNode、maxNode指向的节点的value来更新minNode和maxNode。

使用方法示例:

Node* head = new Node{1, new Node{2, new Node{3, nullptr}}};
Node* minNode;
Node* maxNode;
findMinMax(head, &minNode, &maxNode);
cout << "minNode: " << minNode->value << endl;  // 输出1
cout << "maxNode: " << maxNode->value << endl;  // 输出3
总结

本文介绍了如何在单向链表中查找最大和最小值节点,关键在于遍历整个链表,同时维护最大和最小值节点的指针进行比较。通过本文的学习,我们可以更好地理解单向链表的结构和遍历方式。