21xrx.com
2024-12-22 22:49:49 Sunday
登录
文章检索 我的文章 写文章
C++链表的基本用法
2023-07-05 05:10:18 深夜i     --     --
C++ 链表 基本用法

C++是一种高级编程语言,常用于开发应用程序和系统软件。在编写程序时常常需要用到链表这种数据结构。链表是一种有序的数据结构,可以动态地添加或删除元素。在C++中,使用链表可以更加灵活地管理数据。

链表是由节点构成的,每个节点都包含一个值和一个指向下一个节点的指针。在C++中,可以用类来实现链表。例如,定义一个节点类Node:


class Node {

public:

  int value;

  Node* next;

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

};

这个类有一个int类型的value成员和一个指向下一个节点的指针next。注意,这里next的类型是Node*,表示它是一个指向Node对象的指针。

接着,我们可以定义一个链表类LinkedList:


class LinkedList {

public:

  LinkedList(): head(nullptr), tail(nullptr) {}

  void add(int value);

  void remove(int value);

  void print();

private:

  Node* head;

  Node* tail;

};

这个类有一个头指针head和尾指针tail,表示链表的起始和结束位置。它还有三个方法:

- add方法:添加一个节点。

- remove方法:删除一个节点。

- print方法:打印链表的所有节点。

实现这些方法的代码如下:


void LinkedList::add(int value) {

  Node *node = new Node(value);

  if (head == nullptr)

    head = node;

    tail = node;

   else

    tail->next = node;

    tail = node;

  

}

void LinkedList::remove(int value) {

  Node *current = head;

  Node *previous = nullptr;

  while (current != nullptr) {

    if (current->value == value) {

      if (previous == nullptr)

        head = current->next;

       else

        previous->next = current->next;

      

      delete current;

      return;

    }

    previous = current;

    current = current->next;

  }

}

void LinkedList::print() {

  Node *current = head;

  while (current != nullptr)

    std::cout << current->value << " ";

    current = current->next;

  

  std::cout << std::endl;

}

在add方法中,我们创建一个新的节点,并根据当前链表的状态来决定它的位置:如果链表为空,则将它作为头结点和尾节点;否则,将它添加到尾部。在remove方法中,我们遍历链表,找到需要删除的节点,并更新前一个节点的指针。注意,在删除节点时需要用delete释放内存。最后,在print方法中,我们将链表的所有节点依次打印出来。

使用这些方法,我们可以创建一个链表对象,并对它进行操作:


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++中使用链表就变得非常简单了。通过定义Node和LinkedList类,并实现它们的方法,我们可以方便地管理数据。链表是一种非常高效的数据结构,常用于解决各种实际问题。在学习C++时,学会使用链表是非常重要的一步。

  
  

评论区

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