21xrx.com
2025-04-11 17:44:17 Friday
文章检索 我的文章 写文章
C++链表反转教程
2023-07-04 11:11:51 深夜i     21     0
C++ 链表 反转 教程 数据结构

C++链表反转是一项非常常见的操作,当我们需要按照倒序来遍历链表,或者需要对链表进行倒序排列时,就需要使用链表反转。

下面是一个简单的C++链表反转教程。

首先,我们需要定义链表节点的结构体,包含一个值和指向下一个节点的指针:

struct Node {
  int value;
  Node* next;
};

接下来,我们可以定义一个反转链表的函数:

Node* reverseList(Node* head) {
  Node* prev = nullptr;
  Node* curr = head;
  while (curr != nullptr) {
    Node* next = curr->next;
    curr->next = prev;
    prev = curr;
    curr = next;
  }
  return prev;
}

在这个函数中,我们使用了三个指针,分别代表当前节点(curr)、上一个节点(prev)和下一个节点(next)。我们使用while循环来遍历整个链表,将每个节点的指针反向指向上一个节点。最后,我们返回新的链表头节点(即原链表的尾节点)。

使用这个反转链表函数非常简单。我们只需要将头节点作为参数传递给反转函数,然后将函数返回的节点作为新的头节点即可。

下面是一个示例代码:

int main() {
  Node n1, n2, n3;
  n1.value = 1;
  n1.next = &n2;
  n2.value = 2;
  n2.next = &n3;
  n3.value = 3;
  n3.next = nullptr;
  Node* head = &n1;
  cout << "Original list: ";
  while (head != nullptr)
    cout << head->value << " ";
    head = head->next;
  
  cout << endl;
  head = reverseList(&n1);
  cout << "Reversed list: ";
  while (head != nullptr)
    cout << head->value << " ";
    head = head->next;
  
  cout << endl;
  return 0;
}

在这个示例中,我们创建了一个包含三个节点的链表,并打印出原始链表和反转后的链表。

C++链表反转虽然看起来简单,但是理解其中的原理和使用方法是非常重要的。通过这个教程,相信读者对C++链表反转有了更深入的认识。

  
  

评论区

请求出错了