20120918-LIST类定义《数据结构与算法分析》
LIST类结构
1 template <typename Object> 2 class List 3 { 4 private: 5 struct Node//所有都是公有的 6 { 7 Object data; 8 Node *prev; 9 Node *next; 10 11 Node(const Object & d = Object(),Node *p = NUll,Node *n = Null): 12 data(d) , prev(p) , next(n) 13 { 14 } 15 }; 16 public: 17 class const_iterator 18 { 19 public: 20 const_iterator() : current(NULL){} 21 const Object & operator* () const 22 { 23 return retrieve(); 24 } 25 const_iterator & operator++ ( ) const 26 { 27 current = current->next; 28 return *this; 29 } 30 const_iterator & operator++( int ) 31 { 32 const_iterator old = *this; 33 ++(*this); 34 return old; 35 } 36 bool operator == (const const_iterator * rhs) const 37 { 38 return current == rhs.current; 39 } 40 bool operator != (const const_iterator & rhs) const 41 { 42 return !(*this == rhs); 43 } 44 45 protected: 46 Node *current; 47 48 Object & retrieve() cosnt 49 { 50 return current->data; 51 } 52 const_iterator(Node *p) : current(p) 53 { 54 } 55 friend class List<Object>; 56 }; 57 class iterator : public const_iterator 58 { 59 public: 60 iterator() 61 { 62 } 63 Object & operator* () 64 { 65 return retrieve(); 66 } 67 const Object & operator* () const 68 { 69 return const_iterator::operator*(); 70 } 71 iterator & operator++() 72 { 73 iterator old = *this; 74 ++(*this); 75 return old; 76 } 77 78 protected: 79 iterator(Node *p) : const_iterator(p) 80 { 81 } 82 83 friend class List<object>; 84 }; 85 public: 86 List() 87 { 88 init(); 89 } 90 List(const List & rhs) 91 { 92 init(); 93 *this = rhs; 94 } 95 ~List() 96 { 97 clear(); 98 delete head; 99 delete tail; 100 } 101 const List & operator =(const List & rhs) 102 { 103 if(this == &rhs) 104 return *this; 105 clear(); 106 for(const_iterator itr = rhs.begin();itr!=rhs.end();++itr) 107 push_back(*itr); 108 return *this; 109 } 110 void init() 111 { 112 theSize = 0; 113 head = new Node; 114 tail = new Node; 115 head->next = tail; 116 tail->prev = head; 117 } 118 119 iterator begin() 120 { 121 return iterator(head->next); 122 } 123 const_iterator begin() const 124 { 125 return const_iterator(head->next); 126 } 127 iterator end() 128 { 129 return iterator(tail); 130 } 131 const_iterator end() const 132 { 133 return const_iterator(tail); 134 } 135 136 int size() const 137 { 138 return theSize; 139 } 140 bool empty() const 141 { 142 return size() == 0; 143 } 144 void clear() 145 { 146 while(!empty()) 147 pop_front(); 148 } 149 Object & front() 150 { 151 return *begin(); 152 } 153 const Object & front() const 154 { 155 return *begin(); 156 } 157 Object & back() 158 { 159 return *--end(); 160 } 161 const Object & back() const 162 { 163 return *--end(); 164 } 165 void push_front(const Object & x) 166 { 167 insert(begin(),x); 168 } 169 void push_back(const Object & x) 170 { 171 insert(end(),x); 172 } 173 void pop_front() 174 { 175 erase(begin()); 176 } 177 viod pop_back() 178 { 179 erase(end()); 180 } 181 182 iterator insert(iterator itr,const Object & x) 183 { 184 } 185 iteratro erase(iterator itr ) 186 { 187 } 188 iterator erase(iterator start,iterator end) 189 { 190 } 191 192 private: 193 int theSize; 194 Node *head; 195 Node *tail; 196 197 void init() 198 { 199 } 200 }
转载于:https://www.cnblogs.com/xing901022/archive/2012/09/18/2691405.html
20120918-LIST类定义《数据结构与算法分析》相关推荐
- 数据结构课本学习 --单链表类定义
单链表的类定义: 复合类: class List;class LinkNode{ //结点类定义 friend class List; //List类所有成员可以使用LinkNode的私有成员,反过来 ...
- 【数据结构与算法分析】证logXX 对所有的X0成立
在<数据结构与算法分析:C++描述>中看到个证明题: 证logx<xlogx对所有x>0x>0成立.(在计算机科学中,默认所有的对数都是以2为底的,除非另有说明) 采用赋 ...
- 《Python数据结构与算法分析》第一章课后习题
这里写自定义目录标题 Introduction 练习题 Python易错总结: Introduction 最近开始学数据结构,打算用python作为语言,看的书是米勒和戴维的<Python数据结 ...
- 数据结构与算法分析 收获总结 第1章 数据结构和算法
这学期学这门课到现在为止,还是感觉难度很大,当然老师可能讲得也有点偏离书本,有时候听得有点蒙. 干脆来根据教材写个总结,用的教材是 <数据结构与算法分析>C++ 第3版 电子工业出版社 第 ...
- 数据结构与算法分析 - 5 - 二叉树
1.树 描述:自由树是一个连通的,无回路的无向图. 树不是一种线性结构,但它具有一定的线性特征. 树也可以这样定义:树是由根结点和若干颗子树构成的.树是由一个集合以及在该集合上定义的一种关系构成的.集 ...
- python数据结构与算法40题_Python数据结构与算法分析(笔记与部分作业)
最近为了给写搬砖脚本增加一些算法知识,脑残的看起来算法书.Python数据结构与算法分析,本人英语比较差,看的是翻译版本的. 网上有免费的原版的:https://runestone.academy/r ...
- s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...
<数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...
- C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...
- Weiss的数据结构与算法分析(C++版)源码编译说明
最近尝试编译Weiss的那本数据结构与算法分析(C++版)提供的源代码时,遇到一些问题,特记录如下: 考虑到该书提供的代码是使用模板技术较多,这在提供简洁代码的同时,也给源码的编译带来了一些问题.因而 ...
- 数据结构与算法分析(C++版)(第二版)
查看书籍详细信息: 数据结构与算法分析(C++版)(第二版) 内容简介 本书采用程序员最爱用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型 ...
最新文章
- 完整恢复模式下的备份/恢复
- 极光推送java demo_极光推送- 3 分钟 Demo - 极光文档
- mac 源生安装mysql_Django执行源生mysql语句实现过程解析
- 美国CISA 列出300个已遭利用漏洞,督促组织机构及时修复
- mysql安装 黑马程序员_MySQL数据库安装教程详解
- stringbuilder寻找字符串位置可能存在多个 java_java面试题整理(一)
- java关于考核 源码,java+mysql年终教师考核系统的设计+源代码
- 基于大数据的个性化推荐系统
- 基于JavaMail的Java邮件发送:简单邮件发送
- 如何在WordPress中使用SEO写作助手来改善SEO
- 悉尼大学商业数据科学与计算机学院,悉尼大学数据科学专业
- godot引擎学习7
- EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?
- 配色工具KULER的使用
- Cygwin下载安装
- qt中文乱码原因分析及解决方案
- Windows编程-创建窗口
- W5500的以太网电路,正常线序连接的话可能必须做过孔交叉线序,能否在线路上做交叉处理?
- 给微软免费的文本转语音网站添加下载按钮
- 项目经理,你在推卸责任吗?
热门文章
- 如何解决远程windows服务器安装matlab出现License Manager Error-103问题
- UTC转换BJT时间 时间转换 c语言程序设计 mooc 翁恺
- MemCache在tomcat中的负载均衡和session交叉存放
- Linux基础操作及命令管理
- java运算级别_java运算符优先级别
- YFI 核心开发者 banteg 推出 1:100 万拆分 YFI 代币的新项目 Woofy
- OKExChain生态项目KSwap完成50万美元种子轮融资
- 区块链酒廊BTC Lounge正式启动运营
- Cosmos分布式网络解决方案Althea推出以太坊Cosmos跨链桥
- .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】