21xrx.com
2024-12-23 00:36:00 Monday
登录
文章检索 我的文章 写文章
C++链表的实现
2023-07-08 05:13:49 深夜i     --     --
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++程序员能够非常容易地实现和管理链表。无论是在高级算法的实现中还是在各种编程工具的构建中,链表都是一个必不可少的数据结构。

  
  

评论区

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