📌  相关文章
📜  使用任意指针指向链表中下一个更高值节点的 C++ 程序(1)

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

使用任意指针指向链表中下一个更高值节点的 C++ 程序

在C++中,我们可以使用指针来操作链表的每个节点。常常需要在链表中寻找下一个比当前节点值更高的节点,并将指针指向该节点。

实现思路

遍历链表,找到第一个比当前节点高的节点,并将指针指向该节点。

实现步骤
  • 定义一个指向链表头节点的指针
  • 遍历链表,找到第一个比当前节点高的节点,并将指针指向该节点
  • 如果没有找到更高的节点,指针指向空节点
//定义链表节点结构体
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

//指针指向链表中下一个更高值节点
ListNode* findHigherNode(ListNode* head, int target) {
    ListNode* cur = head;
    while (cur != NULL && cur->val <= target) {
        cur = cur->next;
    }
    return cur;
}

int main() {
    //创建链表
    ListNode* head = new ListNode(1);
    head->next = new ListNode(3);
    head->next->next = new ListNode(5);
    head->next->next->next = new ListNode(7);
    head->next->next->next->next = new ListNode(9);

    //指针指向链表中下一个更高值节点
    ListNode* ptr = findHigherNode(head, 4);

    if (ptr != NULL) {
        cout << "The next higher value node is " << ptr->val << endl;
    } else {
        cout << "No higher value node found" << endl;
    }

    return 0;
}
结果展示

当 target 为 4 时,程序执行结果为:

The next higher value node is 5

当 target 为 10 时,程序执行结果为:

No higher value node found