21xrx.com
2025-03-24 18:12:50 Monday
文章检索 我的文章 写文章
C++ 循环链表的实现代码
2023-07-05 02:26:34 深夜i     9     0
C++ 循环链表 实现代码

C++ 循环链表的实现是一种数据结构,在此结构中,每个节点通过一个指针指向相邻的节点,形成一个环,最后一个节点指向第一个节点。这种数据结构在某些场合下比较适合,例如模拟循环队列、缓存机制等等。

循环链表的实现需要三个基本元素:节点、头节点、指向尾节点的指针。节点可以使用结构体或者类来实现,头节点则不包含数据信息,一般来说指向第一个节点,而尾节点则可以使用一个指向最后一个节点的指针来描述。

下面是C++实现循环链表的代码示例:

#include<iostream>
using namespace std;
// 循环链表节点的数据结构
typedef struct Node
{
  int data;
  struct Node* next;
  Node(int d): data(d), next(NULL) {}
}Node;
// 循环链表
class CircularLinkedList
{
private:
  Node* head; // 头节点
  Node* tail; // 尾节点
public:
  // 构造函数
  CircularLinkedList(): head(NULL), tail(NULL) {}
  // 插入元素
  void insert(int data)
  {
    Node* node = new Node(data);
    if (head == NULL)
      head = node;
    else
      tail->next = node;
    tail = node;
    tail->next = head;
  }
  // 删除元素
  void remove(int data)
  {
    Node* cur = head;
    Node* pre = tail;
    while(cur != tail)
    {
      if (cur->data == data)
      
        pre->next = cur->next;
        delete cur;
        return;
      
      pre = cur;
      cur = cur->next;
    }
    if (tail->data == data)
    
      pre->next = tail->next;
      delete tail;
      tail = pre;
    
  }
  // 输出链表
  void print()
  {
    if (head == NULL)
      return;
    Node* cur = head;
    cout << cur->data << " ";
    cur = cur->next;
    while(cur != head)
    
      cout << cur->data << " ";
      cur = cur->next;
    
    cout << endl;
  }
};
// 主函数
int main()
{
  CircularLinkedList list;
  list.insert(1);
  list.insert(2);
  list.insert(3);
  list.insert(4);
  list.insert(5);
  list.print(); // 输出:1 2 3 4 5
  list.remove(3);
  list.remove(5);
  list.print(); // 输出:1 2 4
  return 0;
}

上面的代码片段展示了一个简单的循环链表的实现,其中包含了插入节点、删除节点和输出节点的方法。开发者可以根据自己的需求对循环链表进行修改、补充。

  
  

评论区