当前位置: 首页 > news >正文

单向循环代码实现cpp

// 单向循环链表
class CircleLink
{
public:CircleLink(){head_ = new Node();tail_ = head_;head_->next_ = head_;}~CircleLink(){Node* p = head_->next_;while (p != head_){head_->next_ = p->next_;delete p;p = head_->next_;}delete head_;}public:// 尾插法   O(1)void InsertTail(int val){Node* node = new Node(val);node->next_ = tail_->next_; // node->next_ = head_;tail_->next_ = node;tail_ = node; // 更新tail_指针指向新的尾节点}// 头插法void InsertHead(int val){Node* node = new Node(val);node->next_ = head_->next_;head_->next_ = node;if (node->next_ == head_){tail_ = node;}}// 删除节点void Remove(int val){Node* q = head_;Node* p = head_->next_;while (p != head_){if (p->data_ == val){// 找到删除节点   head //                 q     q->next_ = p->next_;delete p;if (q->next_ == head_){tail_ = q;}return;}else{q = p;p = p->next_;}}}// 查询bool Find(int val) const{Node* p = head_->next_;while (p != head_){if (p->data_ == val){return true;}}return false;}// 打印链表void Show() const{Node* p = head_->next_;while (p != head_){cout << p->data_ << " ";p = p->next_;}cout << endl;}private:struct Node{Node(int data = 0) : data_(data), next_(nullptr) {}int data_;Node* next_;};Node* head_; // 指向头节点Node* tail_; // 指向末尾节点
};int main()
{CircleLink clink;srand(time(NULL));clink.InsertHead(100);for (int i = 0; i < 10; i++){clink.InsertTail(rand() % 100);}clink.InsertTail(200);clink.Show();clink.Remove(200);clink.Show();clink.InsertTail(300);clink. Show();
}
http://www.lryc.cn/news/223746.html

相关文章:

  • 【原创】java+jsp+servlet简单图书管理系统设计与实现
  • JVM之jinfo虚拟机配置信息工具
  • 软件测试|PO设计模式在 UI 自动化中的实践
  • 如何上传自己的Jar到Maven中央仓库
  • 智能井盖传感器功能,万宾科技产品介绍
  • 洛谷P4185 离线+并查集
  • 遇到java.security.AccessControlException:access denied怎么办?
  • c++对接CAT1400
  • Linux基础【Linux知识贩卖机】
  • CSS 边框、轮廓线
  • Transformer架构 完整的处理流程
  • git and svn 行尾风格配置强制为lf
  • 达梦数据库答案
  • 基于SSM的楼房销售系统设计与实现
  • Blender做一个小凳子学习笔记
  • Maven简介
  • 后端工程化 | SpringBoot 知识点
  • Oracle(15)Managing Users
  • 自动化测试(Java+eclipse)教程
  • ThreadFactory 实例创建方式
  • 【自动化测试】Pytest框架 —— 跳过测试和失败重试
  • python 时间加法 输出t分钟后的时间
  • 51单片机-串口通信
  • JAVA微信端医院3D智能导诊系统源码
  • 考研408-计算机网络 第二章-物理层学习笔记及习题
  • 鸿蒙开发工具的汉化
  • 14:00面试,14:06就出来了,问的问题有点变态。。。。。。
  • 如何使用 NFTScan NFT API 在 zkSync 网络上开发 Web3 应用
  • rust从0开始写项目-读取配置文件
  • Docker的安装以及使用