21xrx.com
2024-11-25 05:06:08 Monday
登录
文章检索 我的文章 写文章
C++单链表完整代码实现
2023-06-24 07:16:08 深夜i     --     --
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++单链表完整代码实现,包括了添加节点、查找节点和删除节点三种核心操作。通过这些操作,我们可以方便快捷地实现一个基础的链表数据结构。

  
  

评论区

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