对于一个头指针为head的带头结点(对于一个头指针为l的单循环链表)

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

大家好,我是讯享网,很高兴认识大家。

头歌C++中的链表是一种基础数据结构,常用于需要频繁插入和删除元素的场景。下面是一个关于链表的强化练习题目示例:

题目:单链表反转 给定一个单向链表,按节点值从大到小排序,并返回一个新的链表,新链表的每个节点值等于原链表中对应位置上所有节点值的最大值。


讯享网

答案示例:

#include &lt;iostream&gt; #include &lt;vector&gt; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; ListNode* reverseList(ListNode* head) { if (!head || !head-&gt;next) return head; // <em>链表</em>为空或只有一个节点,直接返回 ListNode* prev = nullptr, *current = head, *temp = nullptr; while (current) { temp = current-&gt;next; current-&gt;next = prev; // 翻转节点指针 prev = current; current = temp; } return prev; // 返回新的头节点 } void printList(ListNode* head) { while (head) { std::cout &lt;&lt; head-&gt;val &lt;&lt; &quot; -&gt; &quot;; head = head-&gt;next; } std::cout &lt;&lt; &quot;nullptr&quot; &lt;&lt; std::endl; } int main() { // 创建<em>链表</em>示例 ListNode* list = new ListNode(5); list-&gt;next = new ListNode(2); list-&gt;next-&gt;next = new ListNode(8); list-&gt;next-&gt;next-&gt;next = new ListNode(3); printList(list); // 输出:3 -&gt; 8 -&gt; 5 -&gt; 2 -&gt; nullptr list = reverseList(list); printList(list); // 输出:8 -&gt; 5 -&gt; 3 -&gt; 2 -&gt; nullptr return 0; } 

讯享网

在这个例子中,我们首先创建了一个链表并打印出原始顺序。然后通过reverseList函数将其反转,最后再次打印结果,可以看到链表已经按照节点值从大到小排列了。

相关问题–:

  1. 除了反转,链表还有哪些常见的操作?
  2. 如何在链表中查找特定值的第一个节点?
  3. 怎么处理链表的循环问题?
小讯
上一篇 2025-04-26 23:20
下一篇 2025-05-31 07:02

相关推荐

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