📅  最后修改于: 2023-12-03 15:22:22.039000             🧑  作者: Mango
在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