21xrx.com
2024-11-05 14:50:17 Tuesday
登录
文章检索 我的文章 写文章
C++实现单链表的创建
2023-07-01 21:48:54 深夜i     --     --
C++ 单链表 创建 节点 指针

C++是一种流行的编程语言,它在计算机科学中得到了广泛的应用。单链表是一种非常常见的数据结构,它可以在C++中用类来实现。本文将介绍如何使用C++实现单链表的创建。

在开始之前,我们需要了解单链表的基本结构。单链表由一个头指针和一系列节点组成。每个节点包含一个数据元素和指向下一个节点的指针。下面是一个单链表的示意图:


[head] -> [node1] -> [node2] -> ... -> [nodeN] -> [NULL]

其中,head是头指针,它指向第一个节点。每个节点包含一个数据元素和一个指向下一个节点的指针。最后一个节点的指针指向NULL,表示这是链表的末尾。

现在,我们将使用C++来实现单链表的创建。首先,我们需要定义一个节点类,它包含一个数据元素和一个指向下一个节点的指针。下面是一个节点类的示例代码:


class Node {

public:

  int data;

  Node* next;

};

接下来,我们需要定义一个单链表类,它包含一个头指针和一些基本操作,如插入、删除和查找等。下面是一个单链表类的示例代码:


class LinkedList {

public:

  LinkedList();

  ~LinkedList();

  void insert(int data);

  void remove(int data);

  Node* find(int data);

private:

  Node* head;

};

在上面的代码中,我们定义了一个头指针head,默认指向NULL。我们还定义了三个操作:插入、删除和查找。插入操作将指定的数据添加到链表的末尾,删除操作将删除指定的数据,查找操作将查找指定的数据并返回指向该节点的指针。

现在,我们来看一下如何实现这些操作。首先,我们需要实现构造函数和析构函数,它们用于初始化和销毁链表。


LinkedList::LinkedList()

  head = NULL;

LinkedList::~LinkedList() {

  Node* current = head;

  while (current != NULL) {

    Node* next = current->next;

    delete current;

    current = next;

  }

}

在上面的代码中,我们定义了一个构造函数,将头指针初始化为NULL。我们还定义了一个析构函数,它通过遍历整个链表来删除每个节点。

接下来,我们需要实现插入操作。插入操作将新节点添加到链表的末尾。


void LinkedList::insert(int data) {

  Node* newNode = new Node;

  newNode->data = data;

  newNode->next = NULL;

  if (head == NULL)

    head = newNode;

   else {

    Node* current = head;

    while (current->next != NULL)

      current = current->next;

    

    current->next = newNode;

  }

}

在上面的代码中,我们创建了一个新节点newNode,并初始化它的数据元素和指向下一个节点的指针。如果链表为空,则将头指针head指向新节点。否则,我们遍历链表,直到找到最后一个节点,然后将它的指针指向新节点。

接下来,我们需要实现删除操作。删除操作将删除指定的数据。


void LinkedList::remove(int data) {

  Node* previous = NULL;

  Node* current = head;

  while (current != NULL) {

    if (current->data == data) {

      if (previous == NULL)

        head = current->next;

       else

        previous->next = current->next;

      

      delete current;

      return;

    }

    previous = current;

    current = current->next;

  }

}

在上面的代码中,我们遍历链表,查找指定的数据。如果找到了数据,则将指向该节点的指针从链表中删除,并释放其内存。

最后,我们需要实现查找操作。查找操作将查找指定的数据并返回指向该节点的指针。


Node* LinkedList::find(int data) {

  Node* current = head;

  while (current != NULL) {

    if (current->data == data)

      return current;

    

    current = current->next;

  }

  return NULL;

}

在上面的代码中,我们遍历链表,查找指定的数据。如果找到了数据,则返回指向该节点的指针。否则,返回NULL。

现在,我们已经完成了单链表的创建。通过使用C++中的类和指针,我们可以方便地实现数据结构,并轻松地进行各种操作。

  
  

评论区

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