无忧资源站

 找回密码
 加入我们
查看: 1922|回复: 0

[C/C++] C++中反转链表的完整效率写法

[复制链接]

17

主题

30

帖子

197

积分

学徒

Rank: 2

积分
197
发表于 2023-6-19 00:17:30 | 显示全部楼层 |阅读模式
  1. C++中反转链表的完整效率写法

  2. ```cpp
  3. #include <iostream>

  4. using namespace std;

  5. // 链表节点定义
  6. struct ListNode {
  7.     int val;
  8.     ListNode* next;
  9.     ListNode(int x) : val(x), next(nullptr) {}
  10. };

  11. // 反转链表函数
  12. ListNode* reverseList(ListNode* head) {
  13.     ListNode* prev = nullptr;
  14.     ListNode* curr = head;
  15.    
  16.     while (curr != nullptr) {
  17.         ListNode* nextTemp = curr->next;
  18.         curr->next = prev;
  19.         prev = curr;
  20.         curr = nextTemp;
  21.     }
  22.    
  23.     return prev;
  24. }

  25. // 打印链表函数
  26. void printList(ListNode* head) {
  27.     ListNode* curr = head;
  28.    
  29.     while (curr != nullptr) {
  30.         cout << curr->val << " ";
  31.         curr = curr->next;
  32.     }
  33.     cout << endl;
  34. }

  35. int main() {
  36.     // 创建链表 1->2->3->4->5
  37.     ListNode* head = new ListNode(1);
  38.     ListNode* node2 = new ListNode(2);
  39.     ListNode* node3 = new ListNode(3);
  40.     ListNode* node4 = new ListNode(4);
  41.     ListNode* node5 = new ListNode(5);
  42.    
  43.     head->next = node2;
  44.     node2->next = node3;
  45.     node3->next = node4;
  46.     node4->next = node5;
  47.    
  48.     // 打印原始链表
  49.     cout << "Original List: ";
  50.     printList(head);
  51.    
  52.     // 反转链表
  53.     ListNode* reversedHead = reverseList(head);
  54.    
  55.     // 打印反转后的链表
  56.     cout << "Reversed List: ";
  57.     printList(reversedHead);
  58.    
  59.     return 0;
  60. }
  61. ```

  62. 该代码首先定义了一个`ListNode`结构体,用于表示链表节点。然后定义了`reverseList`函数,该函数使用迭代的方式反转链表。在函数中,使用两个指针`prev`和`curr`分别指向前一个节点和当前节点,通过遍历链表,依次将当前节点的`next`指针指向前一个节点,然后更新`prev`和`curr`指针。最后返回`prev`指针,即为反转后的链表头节点。

  63. 在`main`函数中,创建了一个包含5个节点的链表,并打印原始链表。然后调用`reverseList`函数反转链表,并打印反转后的链表。

  64. 该算法的时间复杂度为O(n),其中n为链表的长度。
复制代码


QQ|SiteMap|Map|小黑屋|无忧资源站

GMT+8, 2024-5-19 16:31 , Processed in 0.089134 second(s), 20 queries .

无忧资源站

Copyright © 2022-2032 www.wyzyz.net

快速回复 返回顶部 返回列表