【C++/STL】list的实现(没有采用迭代器和空间配置器所实现的双向链表的基本功能)

来源:互联网 发布:哪些属于大数据项目 编辑:程序博客网 时间:2024/05/16 14:47
<span style="font-size:18px;">#include <iostream>using namespace std;//没有采用迭代器和空间配置器所实现的双向链表的基本功能template<class _Ty>                                  //定义模板类class list                                           //list类{public: typedef size_t size_type;                        //类型重定义protected:struct _Node;                                    //结构体_Nodefriend struct _Node;                             //友元typedef _Node* _Nodeptr;                         //类型重定义struct _Node                                     //结构体定义{_Nodeptr _Next,_Prev;_Ty _Value;};protected:_Nodeptr _Head;                                  size_type _Size;public:_Nodeptr _Buynode(_Nodeptr _Narg = 0, _Nodeptr _Parg = 0)//购买结点{_Nodeptr _S = (_Nodeptr)malloc(sizeof(_Node));_S->_Next = _Narg != 0 ? _Narg : _S;;_S->_Prev = _Parg != 0 ? _Parg : _S;return (_S); }public:size_type size() const                                   //长度{return (_Size); }bool empty() const                                       //判空{return (size() == 0); }explicit list():_Head(_Buynode()), _Size(0)              //list无参构造函数{}explicit list(size_type _N, const _Ty& _V):_Head(_Buynode()), _Size(0)//list构造函数{insert(_N, _V);}_Nodeptr begin()                                         //第一个节点{return _Head->_Next;}_Nodeptr end()                                           //头结点{return _Head;}void insert(_Nodeptr _P,const _Ty& _X)                   //插入结点{_Nodeptr _S = _P;_S->_Prev = _Buynode(_S,_S->_Prev);_S = _S->_Prev;_S->_Prev->_Next = _S;_S->_Value = _X;++_Size;}void insert(size_type _M, const _Ty& _X)                 //插入_M个_X结点{for(;0 < _M;--_M){insert(begin(),_X);}}void push_front(const _Ty& _X)                           //头插{insert(begin(), _X); }void pop_front()                                         //头删{erase(begin());}void push_back(const _Ty& _X)                            //尾插{insert(end(), _X); }void pop_back()                                          //尾删{erase(end()->_Prev);}void assign(size_type _N, const _Ty& _X)                 //重新插入{clear();insert(_N, _X); }_Nodeptr erase(_Nodeptr _P)                              //删除结点{_Nodeptr _S = _P++;_S->_Prev->_Next = _S->_Next;_S->_Next->_Prev = _S->_Prev;free(_S);--_Size;return (_P);}void clear()                                             //清除{_Nodeptr _P = _Head->_Next;while(_P != _Head){_Head->_Next = _P->_Next;_P->_Next->_Prev = _P->_Prev;free(_P);_P = _Head->_Next;  }_Head->_Next = _Head->_Prev;_Size = 0;}void show()                                               //打印{_Nodeptr _P = _Head->_Next;while(_P != _Head){cout<<_P->_Value<<"-->";_P = _P->_Next;}cout<<"Over"<<endl;}~list()                                                  //析构函数{clear();free(_Head);_Head = 0, _Size = 0; }};void main(){list<int> mylist(5,1);mylist.show();mylist.insert(2,4);mylist.show();mylist.push_front(3);mylist.show();mylist.push_back(4);mylist.show();mylist.pop_front();mylist.show();mylist.pop_back();mylist.show();mylist.clear();mylist.show();mylist.assign(2,3);mylist.show();}</span>


此实现仍有很多问题尚未解决,在后期会进行跟进改良,也希望大家指出错误提出建议,谢谢大家~

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 尚客优酒店会员怎么办 钢铁雄心4人力不足怎么办 未经车主同意私自将车卖了怎么办 剧本给几个制片人看过怎么办 没有产品经理ui设计师怎么办 老板请朋友吃饭司机应该怎么办 被化妆学校坑了怎么办 快车约得太远怎么办 工资好低2000多怎么办 苹果手机不能下载软件怎么办 苹果手机下不了软件怎么办 苹果6s下不了软件怎么办 苹果6下不了软件怎么办 ipad更新系统卡住了怎么办 ipad卡住了关不了机怎么办 ipad卡住了没反应怎么办 苹果7下不了软件怎么办 苹果手机开机密码忘了怎么办 苹果开机密码忘了怎么办 我的ipad很卡怎么办 6s升级后卡顿严重怎么办 软件升级后手机卡顿怎么办 ps通道抠图模糊怎么办 电脑锁屏死机了怎么办 ipad电源键坏了怎么办 华为平板死机黑屏了怎么办 苹果4s锁屏键坏了怎么办 平板电脑密码锁忘记密码怎么办 苹果平板电脑密码锁忘记密码怎么办 平板电脑密码锁密码锁死怎么办 小米平板黑屏按键亮怎么办 小米平板黑屏没反应怎么办 小米平板一刷黑屏了怎么办 小米4卡死了怎么办啊 苹果平板电脑开不了机怎么办 ipad开不了机怎么办都是黑屏 手机突然黑屏了死机状态怎么办 苹果平板死机不能重启怎么办 韩众平板死机了怎么办 苹果平板输入密码多次停用怎么办 ld密码被停用了怎么办