21xrx.com
2025-04-05 13:38:07 Saturday
文章检索 我的文章 写文章
C++链表代码实现
2023-07-07 10:26:40 深夜i     13     0
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++链表的实现。使用链表可以轻松地进行插入、删除、查找等操作,是开发中相当常见的数据结构之一。

  
  

评论区

请求出错了