游戏开发之使用类封装双链表数据结构及双链表迭代器–第二版(C++基础)

1.数据结构及其实现如下

#include <iostream>//双链表及其迭代器
class List
{private://外部无法访问Node子类class Node{public:Node *_front;//前驱节点Node *_next;//后继节点int _v;//数据};Node* _pBegin;//记录头节点的前一个节点Node* _pEnd;//记录尾节点的后一个节点int _nSize;//当前链表大小public://构造函数List(){//_pBegin 和_pEnd 不使用且不移动,只用于记录_pBegin = new Node;_pEnd = new Node;//nullptr是C++中的一个增强,是一个宏_pBegin->_front = _pEnd->_next = nullptr;_pBegin->_next = _pEnd;_pEnd->_front = _pBegin;_nSize = 0;}//尾部插入void push_back(const int v){Node *p = new Node;p->_v = v;p->_front = _pEnd->_front;_pEnd->_front->_next = p;p->_next = _pEnd;_pEnd->_front = p;++_nSize;}//头部插入void push_front(const int v){Node* p = new Node;p->_v = v;p->_next = _pBegin->_next;p->_next->_front = p;p->_front = _pBegin;_pBegin->_next = p;++_nSize;}//获取当前链表大小int GetSize(){return _nSize;}public://正向迭代器class iterator{friend class List;//友元类private:Node *_pNode;//记录当前节点位置及数据信息public://构造函数重载iterator(Node *pNode_){_pNode = pNode_;}//前置++运算符重载const iterator& operator++(){_pNode = _pNode->_next;return *this;}//判断两个节点是否相同,!=运算符重载bool operator!=(const iterator& iter){return _pNode != iter._pNode ? 1: 0;}//取值,*运算符重载int& operator*(){return _pNode->_v;}};//获取当前双链表的第一个节点iterator begin(){return iterator(_pBegin->_next);}//获取当前双链表的最后一个节点的下一个节点iterator end(){return iterator(_pEnd);}//头部迭代器会失效,尾部迭代器不会失效,因为尾部迭代器并未存储数据信息,只用于记录//删除当前迭代器位置并返回下一个位置元素iterator erase(const iterator& iter){Node *p = iter._pNode;//删除当前元素的并返回下一个元素iterator it_(p->_next);p->_front->_next = p->_next;p->_next->_front = p->_front;delete p;--_nSize;return it_;}
};

2.测试

int main()
{List list;list.push_back(1);list.push_back(2);list.push_back(3);list.push_front(-1);list.push_front(-2);list.push_front(-3);list.erase(list.begin());//C++11以后的特性:auto 根据右值推导左值类型auto begin = list.begin();auto end = list.end();for (; begin != end; ++begin)std::cout << *begin << std::endl;return 0;
}

游戏开发之使用类封装双链表数据结构及双链表迭代器--第二版(C++基础)相关推荐

  1. Java游戏开发——飞行射击类游戏

    使用到的素材文件夹: 素材说明:bg0.jpg是背景图片.bomb_enemy是敌机爆炸时按顺序播放的四帧图片,bullet_0.png是子弹图片,enemy_alive.png是敌机图片,playe ...

  2. Cocos2d-x怪物智能AI怪物也有智商--之游戏开发《赵云要格斗》(6) cocos2dx 3.3移植版

    源码:git@github.com:baidang201/ARPG_Zhaoyun.git 本文将主要来讲讲游戏开发中的怪物智能,一个好的游戏一般怪物都要分等级,这样我们游戏玩起来才有意思,怪物如果智 ...

  3. Cocos2d-x血条跟随怪物运动--之游戏开发《赵云要格斗》(5)cocos2dx 3.3移植版

    源码:git@github.com:baidang201/ARPG_Zhaoyun.git   本章在前面的基础上<Cocos2d-x自定义血条及其美化--之游戏开发<赵云要格斗>( ...

  4. 泊松回归与类泊松回归(《R语言实践(第二版)》)

    泊松回归与类泊松回归 0. 背景介绍 0.1 泊松回归: 0.2 本示例要做的事: 1.导包 2.导入数据 3.作图 4. 拟合泊松回归: 4.1解释模型参数 4.2 检验过度离势(Overdispe ...

  5. SDL农场游戏开发 4.Crop类,作物的产生及成长

    首先,先创建一个Entity类.该类的内部有一个精灵对象及相关操作来专门负责显示,以后需要显示的类都可继承自Entity类.比如Crop类的父类就是Entity. 问:为什么Soil类不继承自Enti ...

  6. SDL农场游戏开发 3.StaticData类

    前面说过,StaticData类负责管理程序在运行过程中不会发生变化的数据,如下为Resources目录结构: data文件夹保存着一些静态数据,比如crops.csv文件保存着作物信息,soils. ...

  7. 开发日记-20190724 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 14

    E6.3 隐藏口令文件的目的是什么? 通过将配置文件放置到用户的主目录中,可以对一些命令和工具进行定制.启动文件一般都是以圆点(.)开头,以字母rc结尾,这是CTSS操作系统留下的"遗迹&q ...

  8. 开发日记-20190827 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 3

    Referred Blogs 文件描述符标志,文件状态标志 Linux中文件描述符fd和文件指针flip的理解 Linux编程–文件描述符fd 文件共享 Unix支持在不同进程间共享文件. 内核使用了 ...

  9. 开发日记-20190822 关键词 读书笔记《Unix环境高级编程(第二版)》《掌控习惯》DAY 2

    Preface 话说,昨天开始尝试着去改变自己,从基础的习惯开始,11:30准时睡觉,平时差不多12:30才睡觉.按理说,比平时早了一个小时睡觉吧,然后我就把闹钟提前了45分钟,想着还能比平常多睡15 ...

  10. 开发日记-20190816 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 24

    DNS是一个分布式数据库."分布式"意味着我的网店保存着有关我的计算机的数据,您的网店保存着有关您的计算机的数据,当某个网点需要查看另一个网点的数据时,我们大家的网店就以某种方式自 ...

最新文章

  1. Python3经典100例(③)
  2. 未来数据中心的选择:宽带多模光纤(WBMMF)
  3. Spring Boot中文乱码问题怎么解决(按步骤做)
  4. php生成cookie在哪,php程序中cookie的使用方法
  5. 解决SecureCRT与SecureFX中文乱码问题
  6. fedora 安装oracle 12c,Fedora 12下安装Oracle 11客户端
  7. mysql8.0root连接失败_mac 下jdbc连接mysql 8.0 失败
  8. 07:有趣的跳跃【一维数组】
  9. SLAM之g2o安装
  10. 移动端拖拽(模块化开发,触摸事件,webpack)
  11. atomikos 异常报错(java.lang.NoSuchMethodException)
  12. VScode加文件头的方式
  13. 终于来了!Win11 预览版镜像提前出世(附 ISO 下载)
  14. java数组= 0_JAVA数组
  15. C# System命名空间表
  16. 小程序源码《表情包多样版》
  17. Qt error: C2039: “staticMetaObject”: 不是“QXXX”的成员
  18. OpenCV4.4.0 ConnectedComponents连通区域计算
  19. 网络对抗技术——网络嗅探与欺骗(第三部分)
  20. 计算机SCI 源代码,计算机类SCI检索源刊.doc

热门文章

  1. 初学者 | 分词的那些事儿
  2. pip太慢豆瓣下载地址
  3. Hadoop学习系列(一)
  4. SpringCloud——服务网关
  5. 阿里开始“拆”中台?!中台建设何去何从?
  6. 阿里云技术团队原创力作震撼上市,强力解析云上Kubernetes!
  7. Google广告优化与工具
  8. 优化理论03----优化导论和无约束问题的最优条件、优化问题的类型、局部、全局和严格优化、梯度和Hessian 黑塞矩阵和方向导数、无约束问题的最优条件
  9. matlab中的turbo码,基于Matlab的Turbo码仿真研究
  10. java面试突击第一季 github,Github上星标77.6K+Java面试突击版笔记在咸鱼被疯传,太香了...