20120918-双向链表类定义《数据结构与算法分析》
时间:2022-04-22
本文章向大家介绍20120918-双向链表类定义《数据结构与算法分析》,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
将新的节点插入双向链表的时候:
iterator insert(iterator itr,const Object & x)//向双向链表中插入一个x节点
{
Node *p = itr.current;
theSize++;
return iterator(p->prev = p->prev->next = new Node(x,p->prev,p));
}
LIST类的删除节点的过程:
//删除双向链表中的一个节点
iterator erase(iterator itr)
{
Node *p = itr.current;
iterator retVal(p->next);
p->prev->next=p->next;
p->next->prev=p->prev;
delete p;
theSize--;
return retVal;
}
iterator erase(iterator start,iterator end)
{
for(iterator itr = from;itr != to; )
itr = erase(itr);
return to;
}
传递给erase insert的迭代器可能没有初始化 或者 这个迭代器是错误的表达,因此需要一个检测:
protected:
const List<Object> *theList;
Node *current;
const_iterator(const List<Object> & lst,Node *p):
theList(&lst),current(p)'
{
}
void assertIsValid() const
{
if(theList == NULL || current == NULL || current == theList->head)
throw IteratorOutOfBoundsException();
}
带有附加错误检测的insert类:
iterator insert(iterator itr.const Object & x)
{
itr.assertIsValid();
if(itr.theList !=this)
throw IteratorMismatchException();
Node *p = itr.current;
theSize++;
return iterator(*this,p->prev=p->prev->next=new Node (x,p->prev,p));
}
- Javascript: 世纪机器语言?
- OpenDaylight与Mininet应用实战之基本环境搭建一
- 永恒不变的魅力
- MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App
- OpenDaylight与Mininet应用实战之流表操作三
- 天啊,这个围笑代表什么?麻省理工的AI比你更懂 | 论文+Demo
- elixir:灵丹妙药?or 徒有其名?
- OpenDaylight与Mininet应用实战之三层转发机制四
- 程序员效率指南
- 【每日播报】OpenDaylight与Mininet应用实战之复杂网络验证(五)
- Docker hackathon, teamspark 及团队协作软件设计上的思考
- 应用开发中的网络安全
- 力作|phpcms_v9.6.1 任意文件下载漏洞
- 从开发者的角度看:打包和部署
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel异步监控定时调度器实例详解
- python按顺序重命名文件并分类转移到各个文件夹中的实现代码
- Python实现删除某列中含有空值的行的示例代码
- python打开音乐文件的实例方法
- PHP基础之输出缓冲区基本概念、原理分析
- 基于python实现删除指定文件类型
- sync-player:使用websocket实现异地同步播放视频
- CentOS7.0下安装PHP5.6.30服务的教程详解
- PHP实现微信提现功能
- PHP实现SMTP邮件的发送实例
- php实现有序数组旋转后寻找最小值办法
- PHP APP微信提现接口代码
- ThinkPHP5 的简单搭建和使用详解
- php中怎么执行linux命令详解
- phpMyAdmin通过密码漏洞留后门文件