21xrx.com
2025-06-20 06:27:47 Friday
登录
文章检索 我的文章 写文章
C++链表的实现
2023-07-08 05:13:49 深夜i     13     0
C++ 链表 实现

C++语言是一种广泛应用于计算机编程中的高级编程语言。它可以通过不同的数据结构来创造出各种强大的编程工具,其中最基本的数据结构之一就是链表。

链表是一个由节点构成的有序集合,每个节点包含一个数据元素和一个指向下一个节点的指针。通过指针,节点可以以非连续的方式在内存中存储。链表的存储方式使得添加和删除元素变得更加容易和高效,同时也让访问元素变得更加困难和缓慢。

在C++编程中,可以使用类来实现链表。下面是一份简单的C++链表代码,其中包含了链表节点的定义、链表的构造和析构函数,以及添加、删除和打印链表元素的方法:

#include <iostream>
using namespace std;
// 定义链表节点
struct ListNode {
  int val;
  ListNode *next;
  ListNode(int x) : val(x), next(NULL) {}
};
// 定义链表
class LinkedList {
public:
  // 构造函数
  LinkedList()
    head = NULL;
    size = 0;
  
  // 析构函数
  ~LinkedList() {
    ListNode *cur = head;
    while (cur != NULL) {
      ListNode *temp = cur;
      cur = cur->next;
      delete temp;
    }
    head = NULL;
    size = 0;
  }
  // 添加元素
  void add(int val) {
    ListNode *newNode = new ListNode(val);
    if (head == NULL)
      head = newNode;
     else {
      ListNode *cur = head;
      while (cur->next != NULL)
        cur = cur->next;
      
      cur->next = newNode;
    }
    size++;
  }
  // 删除元素
  void remove(int val) {
    if (head == NULL)
      return;
    
    if (head->val == val) {
      ListNode *temp = head;
      head = head->next;
      delete temp;
      size--;
    } else {
      ListNode *prev = head;
      ListNode *cur = head->next;
      while (cur != NULL && cur->val != val)
        prev = cur;
        cur = cur->next;
      
      if (cur != NULL)
        prev->next = cur->next;
        delete cur;
        size--;
      
    }
  }
  // 打印元素
  void print() {
    ListNode *cur = head;
    while (cur != NULL)
      cout << cur->val << " ";
      cur = cur->next;
    
  }
private:
  ListNode *head;
  int size;
};
// 主函数
int main() {
  LinkedList list;
  list.add(1);
  list.add(2);
  list.add(3);
  list.print(); // 输出 "1 2 3"
  list.remove(2);
  list.print(); // 输出 "1 3"
  return 0;
}

在上述代码中,链表节点被定义为包含一个整数值和一个指向下一个节点的指针。链表则被定义为一个包含头节点和长度的类。链表的构造函数和析构函数负责初始化链表和释放其内存空间。添加和删除元素的方法可以在链表中插入、删除或修改数据。最后,打印元素的方法将链表的元素按顺序输出到控制台。

通过使用简单的结构体和类,C++程序员能够非常容易地实现和管理链表。无论是在高级算法的实现中还是在各种编程工具的构建中,链表都是一个必不可少的数据结构。

  
  

评论区