头歌C++中的链表是一种基础数据结构,常用于需要频繁插入和删除元素的场景。下面是一个关于链表的强化练习题目示例:
题目:单链表反转 给定一个单向链表,按节点值从大到小排序,并返回一个新的链表,新链表的每个节点值等于原链表中对应位置上所有节点值的最大值。
答案示例:

#include <iostream> #include <vector> struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; ListNode* reverseList(ListNode* head) { if (!head || !head->next) return head; // <em>链表</em>为空或只有一个节点,直接返回 ListNode* prev = nullptr, *current = head, *temp = nullptr; while (current) { temp = current->next; current->next = prev; // 翻转节点指针 prev = current; current = temp; } return prev; // 返回新的头节点 } void printList(ListNode* head) { while (head) { std::cout << head->val << " -> "; head = head->next; } std::cout << "nullptr" << std::endl; } int main() { // 创建<em>链表</em>示例 ListNode* list = new ListNode(5); list->next = new ListNode(2); list->next->next = new ListNode(8); list->next->next->next = new ListNode(3); printList(list); // 输出:3 -> 8 -> 5 -> 2 -> nullptr list = reverseList(list); printList(list); // 输出:8 -> 5 -> 3 -> 2 -> nullptr return 0; }
讯享网
在这个例子中,我们首先创建了一个链表并打印出原始顺序。然后通过reverseList函数将其反转,最后再次打印结果,可以看到链表已经按照节点值从大到小排列了。
相关问题–:
- 除了反转,链表还有哪些常见的操作?
- 如何在链表中查找特定值的第一个节点?
- 怎么处理链表的循环问题?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/155639.html