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类定义《数据结构与算法分析》相关推荐

  1. 数据结构课本学习 --单链表类定义

    单链表的类定义: 复合类: class List;class LinkNode{ //结点类定义 friend class List; //List类所有成员可以使用LinkNode的私有成员,反过来 ...

  2. 【数据结构与算法分析】证logXX 对所有的X0成立

    在<数据结构与算法分析:C++描述>中看到个证明题: 证logx<xlogx对所有x>0x>0成立.(在计算机科学中,默认所有的对数都是以2为底的,除非另有说明) 采用赋 ...

  3. 《Python数据结构与算法分析》第一章课后习题

    这里写自定义目录标题 Introduction 练习题 Python易错总结: Introduction 最近开始学数据结构,打算用python作为语言,看的书是米勒和戴维的<Python数据结 ...

  4. 数据结构与算法分析 收获总结 第1章 数据结构和算法

    这学期学这门课到现在为止,还是感觉难度很大,当然老师可能讲得也有点偏离书本,有时候听得有点蒙. 干脆来根据教材写个总结,用的教材是 <数据结构与算法分析>C++ 第3版 电子工业出版社 第 ...

  5. 数据结构与算法分析 - 5 - 二叉树

    1.树 描述:自由树是一个连通的,无回路的无向图. 树不是一种线性结构,但它具有一定的线性特征. 树也可以这样定义:树是由根结点和若干颗子树构成的.树是由一个集合以及在该集合上定义的一种关系构成的.集 ...

  6. python数据结构与算法40题_Python数据结构与算法分析(笔记与部分作业)

    最近为了给写搬砖脚本增加一些算法知识,脑残的看起来算法书.Python数据结构与算法分析,本人英语比较差,看的是翻译版本的. 网上有免费的原版的:https://runestone.academy/r ...

  7. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  8. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  9. Weiss的数据结构与算法分析(C++版)源码编译说明

    最近尝试编译Weiss的那本数据结构与算法分析(C++版)提供的源代码时,遇到一些问题,特记录如下: 考虑到该书提供的代码是使用模板技术较多,这在提供简洁代码的同时,也给源码的编译带来了一些问题.因而 ...

  10. 数据结构与算法分析(C++版)(第二版)

    查看书籍详细信息: 数据结构与算法分析(C++版)(第二版) 内容简介 本书采用程序员最爱用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型 ...

最新文章

  1. 完整恢复模式下的备份/恢复
  2. 极光推送java demo_极光推送- 3 分钟 Demo - 极光文档
  3. mac 源生安装mysql_Django执行源生mysql语句实现过程解析
  4. 美国CISA 列出300个已遭利用漏洞,督促组织机构及时修复
  5. mysql安装 黑马程序员_MySQL数据库安装教程详解
  6. stringbuilder寻找字符串位置可能存在多个 java_java面试题整理(一)
  7. java关于考核 源码,java+mysql年终教师考核系统的设计+源代码
  8. 基于大数据的个性化推荐系统
  9. 基于JavaMail的Java邮件发送:简单邮件发送
  10. 如何在WordPress中使用SEO写作助手来改善SEO
  11. 悉尼大学商业数据科学与计算机学院,悉尼大学数据科学专业
  12. godot引擎学习7
  13. EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?
  14. 配色工具KULER的使用
  15. Cygwin下载安装
  16. qt中文乱码原因分析及解决方案
  17. Windows编程-创建窗口
  18. W5500的以太网电路,正常线序连接的话可能必须做过孔交叉线序,能否在线路上做交叉处理?
  19. 给微软免费的文本转语音网站添加下载按钮
  20. 项目经理,你在推卸责任吗?

热门文章

  1. 如何解决远程windows服务器安装matlab出现License Manager Error-103问题
  2. UTC转换BJT时间 时间转换 c语言程序设计 mooc 翁恺
  3. MemCache在tomcat中的负载均衡和session交叉存放
  4. Linux基础操作及命令管理
  5. java运算级别_java运算符优先级别
  6. YFI 核心开发者 banteg 推出 1:100 万拆分 YFI 代币的新项目 Woofy
  7. OKExChain生态项目KSwap完成50万美元种子轮融资
  8. 区块链酒廊BTC Lounge正式启动运营
  9. Cosmos分布式网络解决方案Althea推出以太坊Cosmos跨链桥
  10. .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】