21xrx.com
2024-11-05 18:36:28 Tuesday
登录
文章检索 我的文章 写文章
C++实现单链表的逆序
2023-07-08 05:48:21 深夜i     --     --
C++ 单链表 逆序

单链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表一般用于存储数据量不定的情况,因为链表的大小可以动态增长或缩小。在实际开发中,有时需要对单链表进行逆序操作,本文将探讨如何使用C++实现单链表的逆序。

首先,需要定义单链表节点的结构体,包括数据和指向下一个节点的指针。代码如下:


struct Node {

  int data;

  Node* next;

  Node(int data) : data(data), next(nullptr) {}

};

其中,data表示该节点的数据,next为指向下一个节点的指针。Node(int data)为节点的构造函数,用于初始化数据和指针。

接着,需要定义单链表的类,包括头指针和一系列操作函数。代码如下:


class LinkedList {

public:

  LinkedList() : head(nullptr) {}

  void push_front(int data);

  void reverse();

private:

  Node* head;

};

其中,head为头指针,push_front函数用于将节点插入到链表头部,reverse函数用于逆序链表。

下面是push_front函数的实现代码:


void LinkedList::push_front(int data) {

  Node* newNode = new Node(data);

  if (head == nullptr)

    head = newNode;

   else

    newNode->next = head;

    head = newNode;

  

}

其中,首先创建一个新节点,然后判断链表是否为空,如果为空,则将头指针指向新节点;如果不为空,则将新节点指向原头节点,再将头指针指向新节点。

最后,是逆序函数reverse的实现代码:


void LinkedList::reverse() {

  Node* prev = nullptr;

  Node* current = head;

  Node* next = nullptr;

  while (current != nullptr)

    next = current->next;

    current->next = prev;

    prev = current;

    current = next;

  

  head = prev;

}

其中,首先定义3个指针prev、current和next,分别用于记录当前节点前一个节点、当前节点和下一个节点。然后,从头节点开始遍历链表,将当前节点的next指针指向前一个节点prev,然后将prev指针指向当前节点,再将current指针指向下一个节点。循环直到链表末尾,最后将头指针指向prev。

以上就是使用C++实现单链表逆序的方法,通过定义节点结构体和链表类,并实现节点插入和逆序操作函数,可以方便地进行链表的逆序。

  
  

评论区

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