21xrx.com
2024-11-05 14:43:20 Tuesday
登录
文章检索 我的文章 写文章
C++链表代码实现
2023-07-07 10:26:40 深夜i     --     --
C++ 链表 代码 实现

C++链表是一种非常常用的数据结构,它可以存储一系列数据并按照一定的顺序进行访问。本文将介绍如何使用C++代码实现一个链表。

链表是由多个节点组成的,每个节点包含一个值和一个指向下一个节点的指针。首先,我们需要定义一个节点的结构体。


struct ListNode { 

  int val; 

  ListNode* next; 

};

其中val表示节点的值,next是指向下一个节点的指针。接下来,我们可以定义链表类,包含链表的基本操作:插入节点,删除节点,获取链表长度等。


class LinkedList { 

public: 

  LinkedList(); //构造函数 

  ~LinkedList(); //析构函数 

  void insert(int value); //插入节点 

  void remove(int value); //删除节点 

  int size(); //获取链表长度 

  void print(); //打印链表 

private: 

  ListNode* head; //链表头指针 

  int length; //链表长度 

};

在构造函数中,我们需要初始化链表头指针head和链表长度length。


LinkedList::LinkedList()  

  head = NULL; 

  length = 0; 

插入节点操作需要创建一个新的节点,并将其加入到链表中。


void LinkedList::insert(int value) { 

  ListNode* node = new ListNode(); 

  node->val = value; 

  node->next = NULL; 

  if (head == NULL)  

    head = node; 

   else { 

    ListNode* curr = head; 

    while (curr->next != NULL)  

      curr = curr->next; 

     

    curr->next = node; 

  } 

  length++; 

}

删除节点操作需要先找到目标节点,然后将其前一个节点的指针指向目标节点的下一个节点。


void LinkedList::remove(int value) { 

  if (head == NULL)  

    return; 

   

  if (head->val == value) { 

    ListNode* temp = head; 

    head = head->next; 

    delete(temp); 

    length--; 

    return; 

  } 

  ListNode* curr = head; 

  while (curr->next != NULL) { 

    if (curr->next->val == value) { 

      ListNode* temp = curr->next; 

      curr->next = curr->next->next; 

      delete(temp); 

      length--; 

      return; 

    } 

    curr = curr->next; 

  } 

}

获取链表长度的操作很简单,只需要返回length即可。


int LinkedList::size()  

  return length; 

最后,我们可以实现一个打印链表的函数,用于检查链表的正确性。


void LinkedList::print() { 

  ListNode* curr = head; 

  while (curr != NULL)  

    std::cout << curr->val << " "; 

    curr = curr->next; 

   

  std::cout << std::endl; 

}

这样,我们就完成了C++链表的实现。使用链表可以轻松地进行插入、删除、查找等操作,是开发中相当常见的数据结构之一。

  
  

评论区

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