21xrx.com
2024-11-22 08:05:20 Friday
登录
文章检索 我的文章 写文章
C++ 循环链表的实现代码
2023-07-05 02:26:34 深夜i     --     --
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;

}

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

  
  

评论区

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