当前课程知识点:数据结构(上) > 第二章 向量(上) > (c)无序向量 > 02C-1 概述
好 欢迎回来
我们继续研究向量
回顾前两节
我们以向量为例
给出了数据结构定义的
一种通用方法
这种方法 也就是所谓的模板
大致的格式是这样
以Template引导
然后在括号之间
有一个关键词typename
当然在后边要给出
数据结构的名字
比如就我们这里首先举的例子是Vector
当然还包括它的具体实现
那么 这里最最重要的是
这个typename所定义的模板参数
这个参数的作用就是
指定Vector这个结构中
所有元素的类型
这样的一个方法
与其说是定义了一个Vector
不如说是定义了一系列的Vector
因为在使用的时候
我们可以灵活指定它的类型
典型的方式就是
我们在此后可以这么来定义
用上我们的尖括号
然后定义一种
自己喜欢的向量
那么这个向量中的元素
具体是什么类型呢?
我没说可以有不同的类型
比如说 最基本的可能是整型
那这个意思就是说
我定义了一个
由一系列的整数构成的向量
也可能是浮点数 float
也可能是字符
诸如此类
那么我们读起来
用英文反而更加便于理解
如果这里是int的话
那我们这个Vector实际上是
a Vector of integers
由一系列的整数组成的向量
或者a Vector of floats
一系列的float numbers
构成的一个向量
等等等等
那么更重要的是 在后边
我们将利用这种方式
来构造更为复杂的数据结构
比如说 我们可以把
某些数据结构作为基本的组成元素
来构成向量
举个例子 在后边
会定义二叉树 Binary Tree
这样一种数据结构
那么如果把Bin Tree
作为基本的元素
来构成Vector
那我们就可以构成一个
由一系列的二叉树
构成的一个线性序列
也就是A Vector of Binary Trees
这个东西是什么呢?
如果取个名字的话
我想比较形象地 应该是
把它叫作forest 森林
确实 在后面介绍
霍夫曼编码的时候
会用到这种技巧
所以从这里我们可以领会到
通过采用统一的
这种模板式的方法
可以使得数据结构的定义
非常的规范
而且更重要的是
此后它们可以互相的融合组合
便捷地搭建更为复杂的数据结构
那么我们今天的主要话题呢
将围绕向量的最基本的形式
也就是无序向量来展开
无序向量的意思
不见得一定是说
其中的元素没有顺序
甚至呢 有的时候
其中的元素是根本就
不可能排成顺序
所以在这样的一个前提下
我们将研究如何来定义
并且实现相应的操作接口
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验