21xrx.com
2024-11-22 08:03:24 Friday
登录
文章检索 我的文章 写文章
C++如何建立链表
2023-06-28 12:40:03 深夜i     --     --
C++ 链表 建立

在C++编程中,链表是一种常见的数据结构,用于存储各种数据类型集合的信息。链表由许多节点组成,每个节点包含一个存储值的指针和一个指向下一个节点的指针。这篇文章将介绍如何使用C++代码建立链表。

首先,我们需要定义一个节点类型。在C++中,可以使用结构体或类来定义节点类型。下面是一个使用结构体的节点类型定义:


struct Node {

  int data;

  Node* next;

};

此代码定义了一个包含整数和指向下一个节点的指针的节点类型。值得注意的是,这里使用了 `Node*` 作为指针类型。

接下来,我们需要添加一个新的节点到链表中。可以通过以下代码实现:


void addNode(Node** head, int data) {

  Node* newNode = new Node;

  newNode->data = data;

  newNode->next = NULL;

  if (*head == NULL) {

    *head = newNode;

    return;

  }

  Node* temp = *head;

  while (temp->next != NULL)

    temp = temp->next;

  

  temp->next = newNode;

}

这个函数使用双指针来创建和更新链表。如果链表为空,则使用新节点初始化链表。否则,在链表的末尾添加新节点。在 `newNode` 指针的分配过程中,使用 `new` 操作符。

在链表中查找特定节点时,您可以使用以下代码来遍历整个链表:


Node* findNode(Node* head, int data) {

  Node* temp = head;

  while (temp != NULL) {

    if (temp->data == data)

      return temp;

    

    temp = temp->next;

  }

  return NULL;

}

该函数接受头节点指针和要查找的值,并遍历整个链表以查找匹配的节点。如果找到,则返回该节点的指针。否则,返回 NULL。

删除链表节点也是一种常见的操作。以下是一个用于删除具有指定值的节点的示例代码:


void deleteNode(Node** head, int data) {

  Node* temp = *head, *prev = NULL;

  if (temp != NULL && temp->data == data) {

    *head = temp->next;

    delete temp;

    return;

  }

  while (temp != NULL && temp->data != data)

    prev = temp;

    temp = temp->next;

  

  if (temp == NULL)

    return;

  

  prev->next = temp->next;

  delete temp;

}

此函数接受头节点指针和要删除的值。它遍历链表以查找具有匹配值的节点,并在找到时将其删除。

通过使用以上代码,您可以在C++中轻松创建、查找和删除链表。无论是在学术还是生产环境中,链表是一种非常有用的数据结构,可以轻松存储复杂的信息。

  
  

评论区

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