21xrx.com
2025-04-21 09:55:24 Monday
文章检索 我的文章 写文章
C++单链表完整代码实现
2023-06-24 07:16:08 深夜i     16     0
C++ 单链表 代码实现

C++单链表是数据结构中的一个重要部分,它能够将一组数据按照指定的顺序进行排序,方便快捷地进行查找、添加和删除等操作。以下是C++单链表完整代码实现。

首先,我们需要定义一个结构体,来完成链表的存储。

struct node{
  int data;
  node *next;
};

其中,data代表数据,next代表指向下一个节点的指针。

接下来,我们需要实现添加节点的操作,实现方式如下:

void add_node(node **head, int data){
  node *new_node = new node;
  new_node -> data = data;
  new_node -> next = nullptr;
  if (*head == nullptr){
    *head = new_node;
    return;
  }
  node *temp = *head;
  while (temp -> next != nullptr)
    temp = temp -> next;
  
  temp -> next = new_node;
}

在以上代码中,我们定义了一个接收两个参数的add_node函数,其中head是链表的头节点指针,data是要添加的数据。我们首先新建一个节点,然后确定该节点的data属性和next属性,接着我们需要将该节点链接到链表的末尾。如果链表为空,则将该节点作为头节点,否则我们需要找到链表的末尾,并将链表的next属性指向新节点。

接下来,我们需要实现查找节点的操作,实现方式如下:

node* find_node(node *head, int data){
  node *temp = head;
  while (temp != nullptr){
    if (temp -> data == data)
      return temp;
    
    temp = temp -> next;
  }
  return nullptr;
}

在以上代码中,我们定义了一个接收两个参数的find_node函数,其中head是链表的头节点指针,data是要查找的数据。我们先定义一个指针temp,用于遍历整个链表。通过while循环不断移动temp指针,并判断该节点是否具有对应的data属性,如果找到了则返回该节点的指针,否则返回nullptr表示没有找到。

最后,我们需要实现删除节点的操作,实现方式如下:

void delete_node(node **head, int data){
  if (*head == nullptr)
    return;
  
  node *temp = *head;
  node *prev = nullptr;
  while (temp != nullptr && temp -> data != data)
    prev = temp;
    temp = temp -> next;
  
  if (temp == nullptr)
    return;
  
  if (prev == nullptr){
    *head = temp -> next;
  }
  else
    prev -> next = temp -> next;
  
  delete temp;
}

在以上代码中,我们定义了一个接收两个参数的delete_node函数,其中head是链表的头节点指针,data是要删除的数据。先判断链表是否为空,如果为空则直接返回。接着定义指针temp和prev用于记录查找到节点的位置和该节点的前一个节点的位置。在通过while循环遍历链表查找到要删除节点的位置后,我们需要判断该节点是否为头节点,如果是则将head指针指向该节点的下一个节点,否则我们需要将该节点的前一个节点的next属性指向该节点的下一个节点。最后,我们需要调用delete操作释放掉该节点的内存。

综上所述,以上就是C++单链表完整代码实现,包括了添加节点、查找节点和删除节点三种核心操作。通过这些操作,我们可以方便快捷地实现一个基础的链表数据结构。

  
  

评论区

请求出错了