21xrx.com
2025-03-28 04:17:59 Friday
文章检索 我的文章 写文章
C++ 链表代码实现
2023-07-05 12:42:34 深夜i     10     0
C++ 链表 代码实现 链表操作 指针

在C++中,链表是一种非常常见的数据结构,可以用于许多应用场景,例如实现高效的内存管理和搜索数据,也可以用于动态构建树或图等数据结构。链表是一个由称为节点的对象组成的集合,其中每个节点包含指向下一个节点的指针。本文将介绍如何在C++中实现链表的基本代码。

链表的结构定义

链表由节点组成,每个节点包含了数据和指向下一个节点的指针。在C++中,可以使用结构体或者类来定义节点,以下是结构体定义的示例:

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

其中,data表示节点保存的数据,next是指向下一个节点的指针。

链表的创建和插入

在创建链表时,需要先定义一个头节点,表示链表的开始。另外,还需要定义一个指向当前节点的指针。在插入新节点时,只需要将新节点插入到指定位置,并将指针指向新节点。以下是创建链表和插入新节点的示例代码:

class LinkedList {
private:
  Node* head;
  Node* current;
public:
  LinkedList()
    head = new Node;
    head->next = nullptr;
    current = head;
  
  void insert(int data) {
    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = current->next;
    current->next = newNode;
    current = newNode;
  }
};

在上面的代码中,创建链表时,将头节点的指针指向空,并将当前节点的指针指向头节点。在插入新节点时,先创建一个新节点,然后将新节点插入到当前节点的下一个,并将当前节点的指向新节点。

链表的遍历和删除

遍历链表时,只需要从头节点开始,依次遍历每个节点即可。在删除节点时,需要找到要删除的节点,然后将其前一个节点的指针指向其后一个节点即可。以下是遍历链表和删除节点的示例代码:

class LinkedList {
private:
  Node* head;
  Node* current;
public:
  LinkedList()
    head = new Node;
    head->next = nullptr;
    current = head;
  
  void insert(int data) {
    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = current->next;
    current->next = newNode;
    current = newNode;
  }
  void traverse() {
    Node* p = head->next;
    while (p != nullptr)
      cout << p->data << " ";
      p = p->next;
    
    cout << endl;
  }
  void remove(int data) {
    Node* p = head->next;
    Node* pre = head;
    while (p != nullptr) {
      if (p->data == data)
        pre->next = p->next;
        delete p;
        return;
      
      pre = p;
      p = p->next;
    }
  }
};

在上面的代码中,遍历链表时,将指针从头节点开始往下遍历每个节点,直到指针指向空。在删除节点时,先找到要删除的节点,然后将其前一个节点的指向其后一个节点即可。

链表的应用

链表作为一种数据结构,在实际项目中有很多应用场景。例如,可以通过链表来实现栈或者队列,也可以作为哈希表的底层数据结构。此外,链表还可以用于实现字符串和向量等数据结构。总之,链表具有很大的灵活性和适应性,是C++中一个非常重要的数据结构。

  
  

评论区

请求出错了