21xrx.com
2024-12-22 23:50:43 Sunday
登录
文章检索 我的文章 写文章
C++链表反转教程
2023-07-04 11:11:51 深夜i     --     --
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++链表反转有了更深入的认识。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复