Microsoft PowerPoint - 6-.pptx
|
|
- 悦措 云
- 5 years ago
- Views:
Transcription
1 基本概念 树的存储结构 树的线性表示 树的遍历 二叉树 二叉树的存储表示 二叉树的各种遍历 线索化二叉树 堆 计算二叉树的数目 二叉树的应用 : 霍夫曼树和霍夫曼编码 本章小结
2 6.1 基本概念 树是由一个或多个结点组成的有限集 T, 它满足下面两个条件 : 有一个特定的结点, 称之为根结点 ; 其余的结点分成 m (m 0) 个互不相交的有限集 T 0, T 1,, T m-1 其中每个集合又都是一棵树, 称 T 0, T 1,, T m-1 为根结点的子树 特点 : 除根结点外每个结点有且仅有一个直接前驱, 但可以有 0 或多个直接后继 2
3 树的定义 树是由 n (n 0) 个结点组成的有限集合 如果 n=0, 称为空树 ; 如果 n>0, 则 有一个特定的称之为根 (root) 的结点, 它只有直接后继, 但没有直接前驱 ; 除根以外的其它结点划分为 m (m 0) 个互不相交的有限集合 T 0, T 1,, T m-1, 每个集合又是一棵树, 并且称之为根的子树 3
4 树的特点 每棵子树的根结点有且仅有一个直接前驱, 但可以有 0 个或多个直接后继 A 0 层 E B F C G H D I J 1 层 2 层 height = 3 K L M 3 层 4
5 与树有关的概念 结点的次数 ( 度数 扇出 ): 一个结点的子树个数 树的次数 ( 度数 ): 树中各结点次数的最大值 m 次完全树 : 树 T 中非叶子结点的次数都为 m 定义一棵树的根结点所在的层次为 0, 而其它结点的层次等于它的父结点的层次加 1 树的高度 : 树中层次最大的结点的层次 5
6 其它有关概念 双亲 孩子 兄弟结点 路径 森林 祖先 约定结点 k i 的祖先不包括结点 k i 本身 后代 约定结点 k i 的后代不包括结点 k i 本身 如果给树中的每个结点的每棵子树规定好它们的序号, 那么称此树为有序树 6
7 结点 (node) 包含数据项及指向其它结点的分支 结点的度 (degree) 结点所拥有的子树棵数 叶 (leaf) 结点 即度为 0 的结点, 又称为终端结点 分支 (branch) 结点 除叶结点之外的其它结点, 又称为非终端结点 子女 (child) 结点 若结点 x 有子树, 则子树的根结点即为结点 x 的子女 双亲 (parent) 结点 若结点 x 有子女, 则它即为子女的双亲 兄弟 (sibling) 结点 同一双亲的子女互称为兄弟 祖先 (ancestor) 结点 从根结点到该结点所经分支上的所有结点 子孙 (descendant) 结点 某一结点的子女, 以及这些子女的子女都是该结点的子孙 7
8 结点所处层次 (level) 简称结点层次, 即从根到该结点所经路径上的分支条数 ( 树中任一结点的层次为其双亲结点层次加 1) 树的深度 (depth) 树中结点所处的最大层次 ( 空树深度为 0, 只有一个根结点的树的深度为 1) 树的高度 (height) 高度与深度计算方向不同, 但数值相等 树的度 (degree) 树中结点的度的最大值 有序树 树中结点的各棵子树 T 0, T 1, 是有次序的, 其中 T 0 为根的第 1 棵子树,T 1 为根的第 2 棵子树 无序树 树中结点的各棵子树之间的次序是不重要的, 可以互相交换位置 森林 为 m 棵树的集合 若删去一棵非空树的根结点, 树就变成森林 ; 若增加一个根结点, 让森林中每一棵树的根结点都变成它的子女, 则森林就变成一棵树 8
9 结点 子女 祖先 树的度 结点的度 双亲 子孙 树的深度 分支结点 叶结点 兄弟 结点层次 树高度 森林 A 0 层 E B F C G H D I J 1 层 2 层 height = 3 K L M 3 层 9
10 树类定义 template <class Type> class Tree { // 对象 : 树是由 n (>=0) 个结点组成的有限集合 // 在类界面中的 position 是树中结点的地址 // 在顺序存储方式下是下标型, 在链表存储方式下是指针型 // Type 是树结点中存放数据的类型 // 要求所有结点的数据类型都是一致的 public: Tree( ); // 构造函数, 生成树的结构并初始化 ~Tree( ); // 析构函数, 释放所占存储 position Root( ); // 返回树的根结点地址, 若树为空, 则返回 0 10
11 BuildRoot(const Type &value); // 建立树的根结点 position FirstChild(position p); // 返回结点 p 的第一个子女的地址, 若无子女则返回 0 position NextSibling(position p, position v); // 返回结点 p 的子女 v 的下一兄弟地址, 若无兄弟则返回 0 position Parent(position p); // 返回结点 p 的双亲结点地址, 若 p 为根结点, 则返回 0 Type GetData(position p); // 函数返回结点 p 中存放的值 Type Retrieve(position p); // 函数返回结点 p 中存放的值 11
12 }; bool InsertChild(const position p, const Type &value); // 在结点 p 下插入数据为 value 的新子女结点 // 若结构中结点已满, 则不能插入, 函数返回 true // 若插入成功, 则函数返回 false bool DeleteChild(position p, int i); // 删除结点 p 的第 i 个子女及其全部子孙结点 // 若该结点的第 i 个子女结点不存在, 则函数返回 false // 若删除成功, 则函数返回 true void DeleteSubTree(position t); // 删除以 t 为根结点的子树 bool IsEmpty( ); // 判断树空否, 若树结点数为 0, 则返回 true, 否则返回 false void Traversal(void (*visit) (position p)); // 遍历,visit 是用户自编的访问结点 p 数据的函数
13 子女链表表示法 6.2 树的存储结构 把一个结点用两个部分表示, 数据部分存放结点的数据 ( 关键字 ), 指针部分存放指向子结点的指针 由于可能存在多个子结点, 因此也就需要存放多个指针 实际应用中常常限定指针最多为 m 个, 这种方法的缺点是 m 不容易确定 13
14 一棵树中每个结点具有的子树棵数可能不尽相同, 因此如果用链接指针指示子树根结点的地址, 每个结点所需的链接指针各不相同 采用变长结点的方式, 为各个结点设置不同数目的指针域, 将给存储管理带来很多麻烦 14
15 第一种解决方案 等数量的链域 根据树的度 d 为每个结点设置 d 个指针域 data child 1 child 2 child 3 child d 采用多重链表作为固定长结点的链表形式 由于树中有许多结点的度小于 d, 造成许多空指针域, 空间浪费较大 d 越大, 空间浪费越多 优点在于 : 管理容易 15
16 A B C D E F G 空链域 2n+1 个 A B C D E F G 16
17 第二种解决方案 左子女 -- 右兄弟表示法, 为一种二叉树表示法 由于 d=2, 则为最节省空间的树的存储表示, 每个结点由 3 个域组成 data firstchild nextsibling 若要检测某一结点的所有子女, 只需先通过结点的 firstchild 指针, 找到其第一个子女, 再通过该子女结点的 nextsibling 指针找到其下一兄弟, 依此类推, 找到其它兄弟, 直到 nextsibling 指针为空, 检测结束 17
18 树的左子女 - 右兄弟表示 B A A B C D E F G E F C G D 18
19 双亲表示法 在这种方法中, 每个结点同样由两个部分构成, 第一个部分仍然是数据, 第二个部分也是指针, 但指向双亲结点 由于树中每个结点最多只有一个双亲, 因此每个结点只需要保存一个指针 可根据双亲指针是否为空判断一个结点是否为根 可根据需要规定结点的存放顺序, 例如按照先根遍历的次序等 19
20 双亲表示 A B C D E F G data parent A B C D E F G 利用一组连续的存储单元来存放树中的结点 每个结点有两个域, 一个是 data 域, 用来存放数据元素, 一个是 parent 域, 用来存放指示其双亲结点位置的指针 20
21 广义表表示 A B C D E F G A C D B E F G 树的广义表表示 叶结点 && 根结点 && 分支结点原子结点 && 表头结点 && 子表结点
22 6.3 树的线性表示 两种树的线性表示 树的层号表示 树的括号表示 ( 广义表表示 ) 22
23 树中结点的层号 如果 k 是树中的一个结点, 那么为 k 规定一个整数 lev(k) 作为 k 的层号, 要求 : 如果 k 是 k 的子结点, 那么 lev(k ) >lev(k); 如果 k 和 k 都是 k 的子结点, 那么 lev(k ) =lev(k ); 层号与结点所在的层次含义不同, 结点的层次是唯一的, 而结点的层号则不然, 只要满足层号的两个条件的整数都可以作为结点的层号 23
24 树的层号表示 树的层号表示是按前序写出树中全部结点, 并在结点之前带上结点的层号 例如图 6-1 的树就可以表示成 : (0,k 0 ), (1,k 1 ), (2,k 2 ), (2,k 3 ), (1,k 4 ), (1,k 5 ), (2,k 6 ), (3,k 7 ) 24
25 广义表表示法 广义表表示法是把根结点表示为广义表的表头 对于每个结点 A,A 的每个子结点 C, 如果 C 是非叶子结点, 则在 A 表中有一个对应于 C 的子表结点, 对应子表的表头结点为 C; 如果 C 是叶子结点, 则在 A 表中有一个对应 C 的原子结点 k0(k1(k2,k3),k4,k5(k6(k7)))
26 6.4 树的遍历 树的遍历是按一定顺序访问树中每个结点, 同时每个结点只能被访问一次 树的遍历方式有多种, 常见的包括 : 树的前序遍历 ( 有的称为先根遍历 ) 树的后序遍历 ( 有的称为后根遍历 ) 树的层次遍历 前序和后序遍历都属于深度优先遍历, 层次遍历又称为广度优先遍历 对于有序树来说, 访问树中的结点时, 总是从左到右遍历各棵子树, 因此上述每一种遍历方法遍历所得到的结点序列都是唯一的 26
27 图 6-3 的各种遍历序列 前序遍历 ABECFGHD 后序遍历 EBFHGCDA 层次遍历 ABCDEFGH 27
28 用递归实现树的前序遍历 #define MAXN 10 template <class Type> struct node { Type data; struct node *child[maxn]; }; template <class Type> class Tree { private: node <Type> *root; public: // 方法的声明, 具体内容见下一页 }; 28
29 m 次树前序遍历的递归实现 void preorder(node <Type> *t) { int m=maxn; if (t!=null) { cout<<t->data<<endl; for (int i=0; i<m; i++) preorder(t->child[i]); } } 29
30 m 次树前序遍历的非递归实现 void s_preorder(node<type> *t, intm) { Stack <node <Type> *> s(100); if (t==null) return; s.push(t); while (!s.isempty( )) { s.pop(&t); cout<<t->data<<endl; for (int i=m-1; i>=0; i--) if (t->child[i]!=null) s.push(t->child[i]); } } 30
31 程序 6-3 Tree 类的层次遍历 void levorder(node <Type> *t, int m) { node <Type> *p; Queue <node <Type> *> q; q.enqueue(t); while (!q.isempty( )) { q.dequeue(&p); cout<<p->data<<endl; for (int i=0; i<m; i++) if (p->child[i]!=null) q.enqueue(p->child[i]); } } 31
32 32
33 6.5 二叉树 (Binary Tree) 二叉树是一个有限的结点集合, 这个集合或者为空 ; 或者有一个根结点及表示根结点的左 右子树的两个互不相交的结点集合所组成, 而根结点的左 右子树也都是二叉树 二叉树可以是空的, 空的二叉树不包含任何结点, 而一般的树至少有一个结点 33
34 二叉树的定义一棵二叉树是结点的一个有限集合, 该集合或者为空, 或者是由一个根结点加上两棵分别称为左子树和右子树的 互不相交的二叉树组成 二叉树的特点是每个结点最多有两个子女, 即二叉树中不存在度大于 2 的结点, 且二叉树的子树有左右之分, 其子树的次序不能颠倒 L R 二叉树的五种不同形态 L R 34
35 二叉树的性质 性质 1 若二叉树的层次从 0 开始, 则在二叉树的第 i 层最多有 2 i 个结点 (i 0) [ 证明用数学归纳法 ] 性质 2 高度为 k 的二叉树最少有 k+1 个结点, 最多有 2 k+1-1 个结点 (k 0) [ 证明用求等比级数前 k 项和的公式 ] k =2 k
36 性质 3 对任何一棵二叉树, 如果其叶结点有 n 0 个, 度为 2 的非叶结点有 n 2 个, 则有 n 0 =n 2 +1 证明 : 若设度为 1 的结点有 n 1 个, 总结点个数为 n, 总边数为 e, 则根据二叉树的定义 : n=n 0 +n 1 +n 2 e=2n 2 +n 1 =n-1 因此, 有 2n 2 +n 1 =n 0 +n 1 +n 2-1 n 2 =n 0-1 n 0 =n
37 定义 1 满二叉树 (Full Binary Tree) 高度为 k 的满二叉树是有 2 k+1-1 个结点的二叉树, 其中每一层结点都达到了最大个数 除最底层结点的度为 0 外, 其它各层结点的度都为 2 定义 2 完全二叉树 (Complete Binary Tree) 若设一棵具有 n 个结点的高度为 k 的二叉树, 其每一个结点都与高度为 k 的满二叉树树中编号为 1~n 的结点一一对应 除第 h 层之外, 其它各层 (0 k-1) 的结点数都达到最大个数, 第 k 层从右向左连续缺若干结点 37
38 性质 4 具有 n (n 0) 个结点的完全二叉树的高度为 log 2 (n+1) -1 ( 证明 : 参见课本 )
39 性质 5 如将一棵有 n 个结点的完全二叉树自顶向下, 同一层自左向右连续给结点编号 0,1, 2,, n-1, 则有以下关系 : 如果 i= 0, 则结点 i 无双亲 ; 如果 i> 0, 则结点 i 的双亲为 (i -1)/2 如果 2 i+1 < n, 则结点 i 的左孩子为 2 i+1, 若 2 i+2 < n, 则结点 i 的右孩子为 2 i+2 如果 i 为偶数, 且 i 0, 则结点 i 的左兄弟为结点 i-1, 如果 i 为奇数, 且 i n-1, 则结点 i 的右兄弟为 i
40 二叉树类定义 template <class Type> class BinaryTree { public: BinaryTree( ); // 构造函数 BinaryTree(BinTreeNode <Type> *lch, BinTreeNode <Type> *rch, Type item); // 构造以 item 为根,lch 和 rch 为左右子树的二叉树 int Height( ); // 返回树的深度或高度 int Size( ); bool IsEmpty( ); // 判二叉树空否 BinTreeNode <Type> * Parent (BinTreeNode <Type> *current); 40
41 }; BinTreeNode <Type> * LeftChild (BinTreeNode <Type> *current); BinTreeNode <Type> * RightChild (BinTreeNode <Type> *current); bool Insert (Type item); bool Remove(Type item); bool Find(const Type &item) const; bool GetData(const Type &item) const; BinTreeNode <Type> * GetRoot( ) const; void PreOrdder(void (*visit) (BinTreeNode <Type> *p)); void InOrdder (void (*visit)(bintreenode <Type> *p)); void PostOrdder (void (*visit) (BinTreeNode <Type> *p)); void LevelOrdder (void (*visit) (BinTreeNode <Type> *p)); 41
42 把任意次树转换成相应的二叉树的方法 把具有 m 个子结点 k 0,k 1,,k m-1 的结点 k 转换成以 k 0 作为结点 k 的左子结点, 并且 k i+1 作为 k i (i=0,1,,m-2) 的右子结点 这种方法又称为左孩子右兄弟法 树的先根遍历顺序与对应二叉树的前序遍历顺序相同 树的后根遍历顺序与对应二叉树的中序遍历顺序相同 42
43 图 6-4 左孩子右兄弟转换方法的示意图 43
44 转换过程 : 图 6-5, 6-6,
45 转换成二叉树后的树的先根遍历的递归算法 void preorder( node<type> *t) { if(t!=null) { cout<<t->data<<endl; for(t=t->lchild; t!= NULL;t=t->rchild ) preorder(t); } }
46 转换成二叉树后的树的后根遍历的递归算法 void postorder( node<type> *t) { if(t!=null) { for(t=t->lchild; t!= NULL;t=t->rchild ) postorder(t); cout<<t->data<<endl; } }
47 T 1 T 2 T 3 A F H B C D G I J E 森林与二叉树的转换 森林与二叉树的对应关系 K 3 棵树的森林 T 1 A T 2 F T 3 B G I C K D E H J B A C E 各棵树的二叉树表示 D G K F I H J 森林的二叉树表示 47
48 森林转化为二叉树 T=(T 0,T 1,,T m-1 ) 是由 m(m 0) 棵树构成的森林, 得到对应二叉树 β(t) 的方法如下 : 如果 m=0, 那么 β(t) 为空的二叉树 ; 如果 m>0, 那么 β(t) 的根结点就是 T 0 的根结点 ; β(t) 的根结点的左子树是 β(a 0, A 1,, A r-1 ), 其中 (A 0,A 1,,A r-1 ) 是 T 0 的根结点的子树 ;β(t) 的根结点的右子树是 β(t 1,,T m-1 ) 上述转换算法的逆转换可以把 T 2 转换回相应的森林 48
49 二叉树转换为森林 如果二叉树为空, 对应的森林也为空 如果二叉树非空, 则对应的森林中 第一棵树的根为二叉树的根 ; 第一棵树的子树森林是由二叉树的根的左子树转换而来, 森林中其余的树组成的森林则由二叉树的根的右子树转换而成
50 程序 6-4 三次树转换为二叉树的程序 template <class Type> struct node3 { Type data; structnode3 *child[3]; }; typedef node3 <int> NODE3; template <class Type> struct node2 { Type data; structnode2 *lchild; structnode2 *rchild; }; typedef node2 <int> NODE2; NODE2 * beta(node3 *p, NODE3 *q, NODE3 *r) { NODE2 *t; if (p==null) return NULL; t=new NODE2( ); t->data=p->data; t->lchild=beta(p->child[0], p->child[1], p->child[2]); t->rchild=beta(q, r, NULL); return t; } 50
51 数组方式 6.6 二叉树的存储表示 二叉树的顺序表示 当在数据处理过程中, 二叉树的大小和形态不发生剧烈的动态变化时 用一组连续的存储单元存储二叉树的数据元素 用于表示完全二叉树的存储表示非常有效, 表示一般二叉树不很理想 在树中进行插入和删除时, 为反映结点层次变动, 可能需要移动许多结点, 降低算法效率 51
52 完全二叉树顺序表示 ( 最简单 最省存储 ) ** 对完全二叉树的所有结点按照层次次序自顶向下, 得到一个结点的线性序列, 按该序列将二叉树放在一维向量中 ** 利用完全二叉树的性质 5, 从一个结点的编号推算出其双亲 子女 兄弟等结点的编号, 找到这些结点 52
53 一般二叉树顺序表示 7 ** 对二叉树结点进行编号, 然后按其编号将它放到一维数组中 ** 在编号时, 若遇到空子树, 应在编号时假定有此子树进行编号, 而在顺序存储时留出相应位置, 由此找到其双亲 子女 兄弟结点的位置, 但可能消耗大量空间 53
54 极端情形 : 只有右单支的二叉树 由于一般二叉树必须仿照完全二叉树那样存储, 可能会浪费很多存储空间, 单支树就是一个极端情况 ** 要求一个可存储 31 个结点的一维数组, 但只在其中几个位置放有结点数据, 其它大多数结点空间都未利用, 又不能压缩到一起, 造成很大空间浪费
55 链表方式 二叉树的链表表示 便于插入 删除和修改 ; 数据不需移动 ; 只需修改指针 ; 可提高效率 55
56 leftchild data rightchild data leftchild rightchild 二叉链表 56
57 leftchild data parent rightchild data parent leftchild rightchild 三叉链表 57
58 root root root C D C D C D A A A B B B E F E F E 二叉树二叉链表三叉链表二叉树链表表示的示例 F 58
59 C root A B D E F data parent leftchild rightchild A B C D E F 二叉树的的静态链表结构 59
60 二叉树类定义 template <class Type> class BinaryTree; template <class Type> class BinTreeNode { friend class BinaryTree <Type>; private: Type data; BinTreeNode <Type> *leftchild; BinTreeNode <Type> *rightchild; public: BinTreeNode( ) : leftchild(null), rightchild(null){ } BinTreeNode(Type item, BinTreeNode <Type> *left=null, BinTreeNode <Type> *right=null): data(item), leftchild(left), rightchild(right){ } 60
61 }; Type GetData( ) const { return data;} BinTreeNode <Type> * GetLeft( ) const { return leftchild;} BinTreeNode <Type> * GetRight( ) const { return rightchild;} void SetData (const Type &item) { data=item;} void SetLeft(BinTreeNode <Type> *L) { leftchild=l;} void SetRight(BinTreeNode <Type> *R) { rightchild=r;} 61
62 template <class Type> class BinaryTree { protected: BinTreeNode <Type> *root; Type RefValue; void CreateBinTree(istream &in, BinTreeNode <Type> *&subtree); bool Insert(BinTreeNode <Type> *&subtree, const Type &x); void Destroy(BinTreeNode <Type> *&subtree); bool Find(BinTreeNode <Type> *&SubTree, const Type &x) const; BinTreeNode <Type> * Copy(BinTreeNode <Type> *orignode); int Height(BinTreeNode <Type> *subtree); int Size(BinTreeNode <Type> *subtree); BinTreeNode <Type> * Parent(BinTreeNode <Type> *subtree, BinTreeNode <Type> *Parent); 62
63 BinTreeNode * Find(BinTreeNode <Type> *&subtree, const Type &x) const; void Traverse(BinTreeNode <Type> *&subtree, ostream &out); void PreOrder(BinTreeNode <Type> *&SubTree, void (*visit) (BinTreeNode <Type> *p)); void InOrder(BinTreeNode <Type> *&SubTree, void (*visit)(bintreenode <Type> *p)); void PostOrder(BinTreeNode <Type> *&SubTree, void (*visit)(bintreenode <Type> *p)); friend istream & operator >> (istream &in, BinaryTree <Type> &Tree); friend ostream & operator << (ostream &out, BinaryTree <Type> &Tree); 63
64 public: BinayTree( ) : root(null); BinayTree(Type value), RefValue(value), root(null) {} BinaryTree(BinaryTree <Type> &s); ~BinaryTree( ) { Dstroy(root); } bool IsEmpty( ) { return (root==null)?true : false;} BinTreeNode <Type> * Parent(BinTreeNode <Type> *current) {return(root==null root==current)? NULL : Parent(root, current); } BinTreeNode <Type> * LeftChild (BinTreeNode <Type> *current) {return(current!=null)?current->leftchild : NULL; } BinTreeNode <Type> * RightChild (BinTreeNode <Type> *current) {return(current!=null)?current->rightchild : NULL; } 64
65 }; int Height( ) { return Height(root); } int Size( ) { return Size(root); } BinTreeNode <Type> * GetRoot( ) const { return root;} void PreOrder (void (*visit) (BinTreeNode <Type> *p)) { PreOrder(root, visit); } void InOrder(void (*visit)(bintreenode <Type> *p)) { InOrder(root, visit); } void PostOrder(void (*visit) (BinTreeNode <Type> *p)) { PostOrder(root, visit); } void LevelOrder(void (*visit) (BinTreeNode <Type> *p)); int Insert(const Type item); BinTreeNode <Type> * Find(Type item) const; 65
66 二叉树部分成员函数的实现 template <class Type> void BinaryTree <Type> :: Destroy(BinTreeNode <Type> *subtree){ if (subtree!=null){ Destroy(subTree->leftChild); Destroy(subTree->rightChild); delete subtree; } } 66
67 template <class Type> BinTreeNode <Type> * BinaryTree <Type> :: Parent (BinTreeNode <Type> *subtree, BinTreeNode <Type> *current){ if (subtree==null) returnnull; if (subtree->leftchild==current subtree->rightchild==current) return subtree; BinTreeNode <Type> *p; if ((p=parent(subtree->leftchild, current))!=null) return p; else return Parent(subTree->rightChild, current); } 67
68 template <class Type> void BinaryTree <Type> :: Traverse(BinTreeNode <Type> *subtree, ostream &out){ // 私有函数 : 搜索并输出根为 subtree 的二叉树 if (subtree!=null){ out<<subtree->data<< ; Traverse(subTree->leftChild, out); Traverse(subTree->rightChild, out); } } 68
69 istream & operator >> (istream &in, BinaryTree <Type> &Tree){ // 重载操作 : 输入并建立一棵二叉树 Tree //in 是输入流对象 Type item; cout<< 构造二叉树 :\n ; // 打印标题 : 构造二叉树 cout<< 输入数据 ( 用 <<Tree.RefValue<< 结束 ): ; // 提示 : 输入数据 in>>item; // 输入,RefValue 是输入结束标志 while (item!=tree.refvalue){ // 判断是否结束输入 Tree.Insert(item); // 插入到树中 cout<< 输入数据 ( 用 <<Tree.RefValue<< 结束 ): ; in>>item; // 输入 } return in; } 69
70 ostream & operator << (ostream &out, BinaryTree <Type> &Tree){ out<< 二叉树的前序遍历 \n ; Tree.Traverse(Tree.root, out); out<<endl; return out; } 70
71 采用广义表建立二叉树 广义表的表名放在表前, 表示树的根结点, 括号中是根的左 右子树 每个结点的左 右子树用逗号隔开 若仅有右子树没有左子树, 逗号不能省略 在整个广义表表示输入的结尾加上一个特殊符号 ( 如 #, 存于 RefValue 中 ), 表示输入结束 A(B(D, E(G, )), C(, F))# 71
72 算法基本思想 依次从保存广义表的字符串 ls 中输入字符 若是字母则表示结点值, 建立新结点, 作为左子女 (k=1) 或右子女 (k=2) 链接到其父结点上 若是左括号 (, 则表明子表开始, 将 k 置为 1; 若遇到的是右括号 ), 则表明子表结束 若遇到逗号,, 则表示以左子女为根的子树处理完毕, 应接着处理以右子女为根的子树, 将 k 置为 2 如此处理, 直至读入结束符 # 为止 使用一个栈, 在进入子表之前将根结点指针进栈, 以便括号内的子女链接之用, 在子表处理结束时退栈 72
73 void CreateBinTree(istream &in, BinTreeNode <char> *&BT) { // 从输入流 in 输入二叉树的广义表表示建立对应的二叉链表 Stack <BinTreeNode <char> *> s; BT=NULL; BinTreeNode <char> *p, *t; intk; charch; in>>ch; while (ch!=refvalue){ switch (ch) { case ( :s.push(p); k=1; break; case ) :s.pop(t); break; case, :k=2; break; default : p=new BinTreeNode(ch); if (BT==NULL) BT=p; else if (k==1){s.gettop(t); t->leftchild=p;} else { S.GetTop(t); t->rightchild=p;} } in>>ch; } }
74 6.7 二叉树的各种遍历 树的遍历就是按某种次序访问树中的结点, 要求每个结点访问一次且仅访问一次 设访问根结点记作 V, 遍历根的左子树记作 L, 遍历根的右子树记作 R, 则可能的遍历次序有 前序 VLR 镜像 VRL 中序 LVR 镜像 RVL 后序 LRV 镜像 RLV 二叉树的层次遍历方法与一般有序树的几乎完全相同, 不再给出 74
75 中序遍历 (Inorder Traversal) 中序遍历二叉树算法的框架是 : 若二叉树为空, 则空操作 ; 否则 中序遍历左子树 (L); + - / 访问根结点 (V); 中序遍历右子树 (R) a * e f 遍历结果 b - a+b*c-d-e/f c d 75
76 程序 6-6 中序遍历的递归算法 void r_midorder(node *t) { if(t!= NULL) { r_midorder(t->lchild); cout<<t->data<<endl; r_midorder(t->rchild); } }
77 二叉树递归的中序遍历算法 (C++ 形式 ) template <class Type> void BinaryTree <Type> :: InOrder(BinTreeNode <Type> *subtree, void (*visit) (BinTreeNode <Type> *p)) { if (subtree!=null){ InOrder(subTree->leftChild); visit(subtree->data); InOrder(subTree->rightChild); } } 77
78 前序遍历 (Preorder Traversal) 前序遍历二叉树算法的框架是 : 若二叉树为空, 则空操作 ; 否则 访问根结点 (V); + - / 前序遍历左子树 (L); 前序遍历右子树 (R) a * e f 遍历结果 b - -+a*b-cd/ef c d 78
79 前序遍历的递归算法 void r_preorder(node *t) { if(t!= NULL) { cout<<t->data<<endl; r_preorder(t->lchild); r_preorder(t->rchild); } }
80 二叉树递归的前序遍历算法 (C++ 形式 ) template <class Type> void BinaryTree <Type> :: PreOrder(BinTreeNode <Type> *subtree, void (*visit) (BinTreeNode <Type> *p)) { if (subtree!=null){ visit(subtree->data); PreOrder(subTree->leftChild); PreOrder(subTree->rightChild); } } 80
81 后序遍历 (Postorder Traversal) 后序遍历二叉树算法的框架是 : 若二叉树为空, 则空操作 ; 否则 后序遍历左子树 (L); + - / 后序遍历右子树 (R); 访问根结点 (V) a * e f 遍历结果 b - abcd-*+ef/- c d 81
82 后序遍历的递归算法 void r_posorder(node *t) { if(t!= NULL) { r_posorder(t->lchild); r_posorder(t->rchild); cout<<t->data<<endl; } }
83 二叉树递归的后序遍历算法 (C++ 形式 ) template <class Type> void BinaryTree <Type> :: PostOrder(BinTreeNode <Type> *subtree, void (*visit) (BinTreeNode <Type> *p)) { if (subtree!=null) { PostOrder(subTree->leftChild); PostOrder(subTree->rightChild); visit(subtree->data); } } 83
84 程序 6-5 非递归中序遍历算法 1. template <class Type > struct node { 2. Type data; struct node *lchild; struct node *rchild; }; 3. typedef node< int > NODE; 4. void s_midorder(node *t) { 5. Stack<NODE*> s(100); 6. while(t!= NULL!s.isEmpty()) { 7. while(t!= NULL) { 8. s.push(t) ; t = t->lchild; 9. } 10. if(!s.isempty()) { 11. s.pop( &t ); cout<<t->data<<endl; t = t->rchild; 12. } 13. } 14. } Q: 只要把上面程序中的输出语句调整到一个适当的位置上, 就能实现二叉树的 前序遍历
85 另一种非递归前序遍历算法 1. template <class T> void BinaryTree<T> :: PreOrder( void(*visit)(bintreenode<t> *p)) { 2. stack <BinTreeNode<T>* > S; 3. BinTreeNode<T> * p; 4. S.Push ( root ); 5. while (!S.IsEmpty() ) { 6. S.Pop( p); 7. visit(p); 8. if ( p->rightchild!= NULL ) S.Push ( p- >rightchild ); 9. if ( p->leftchild!= NULL ) S.Push ( p->leftchild ); 10. } 11. }
86 二叉树遍历的思考 1. 后序遍历的非递归 2. 层次遍历的非递归 3. 数组存储方式下的各种遍历
<4D F736F F F696E74202D20536C FB5DACBC4D5C220CAF7D3EBB6FEB2E6CAF7205BBCE6C8DDC4A3CABD5D>
第四章树 二叉树 森林 树的基本概念 二叉树 定义 主要特征 存储结构 : 顺序 链式 遍历 线索二叉树 : 基本概念 构造 树 森林 存储结构 : 树 森林与二叉树的转换 遍历 : 树 森林 应用 二叉排序树 Huffman 树和哈夫曼编码 树和有根树 两种树 : 自由树 有根树 树 (Tree) 和森林的概念 自由树无回路的连通图 : 一棵自由树 T f 可定义为一个二元组 T f = (V,
More informationPowerPoint Presentation
数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 6 章树 C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用
More informationPowerPoint 演示文稿
数据结构与算法 ( 五 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第五章 的概念 的抽象数据类型 深度优先搜索 宽度优先搜索 的存储结构 D B A E G C H F I 二叉搜索树 堆与优先队列 Huffman 树及其应用 2 5.2
More information8
孙猛 http://www.math.pku.edu.cn/teachers/sunm 2017 年 10 月 26 日 1 树及其抽象数据类型 树的实现 树林林 2 树的 几种不不同表现形式 3 4 html head body meta title h1 ul h2 li li a 5 树是 n(n 0) 个结点的有限集 T,T 非空时满 足 : 有且仅有 一个特殊的称为根 (root) 的结点
More information幻灯片 1
二叉树 汪小林改写 基于张铭 王腾蛟原稿 北京大学信息学院 主要内容 1. 二叉树的概念 2. 二叉树的抽象数据类型 3. 二叉树的存储结构 4. 二叉搜索树 5. 堆与优先队列 6. Huffman 树及其应用 7. 二叉树知识点总结 1 二叉树的概念 二叉树的定义及基本术语 满二叉树 完全二叉树 扩充二叉树 二叉树的主要性质 二叉树的定义 二叉树 (binary tree) 由结点的有限集合构成,
More informationMicrosoft PowerPoint - 06.ppt
第 6 章树和二叉树 6.1 树的基本概念 6.2 二叉树概念和性质 6.3 二叉树存储结构 6.4 二叉树的遍历 6.5 二叉树的基本操作及其实现 6.6 二叉树的构造 6.7 哈夫曼树 本章小结 6.1 树的基本概念 6.1.1 树的定义形式化定义 : 树 :T={D,R} D 是包含 n 个结点的有穷集合 (n 0) 当 n=0 时为空树, 否则关系 R 满足以下条件 : 有且仅有一个结点 d
More information6 tree
6 树和二叉树 董洪伟 http://hwdong.com 1 树和二叉树 主要内容一 树的类型定义二 二叉树的类型定义三 二叉树的存储结构四 二叉树的操作五 线索二叉树六 树和森林七 赫夫曼树八 树的计数 2 树的类型定义 树是一个层次结构的抽象模型 树是由具有父子关系的结点构成的 应用示例 : - 组织结构 - 文件系统 Computers R Us Sales Manufacturing R&D
More informationPowerPoint 演示文稿
第 6 章树和二叉树 6.1 树的概念与定义 6.2 二叉树 6.3 二叉树的遍历与线索化 6.4 树 森林和二叉树的关系 6.5 哈夫曼树及其应用 定义 : 树 (tree) 是 n(n 0) 个结点的有限集 其中 : 在任意一个非空树中 :1) 有且仅有一个特定的称为根 (root) 的结点 ; 2) 当 n>1 时, 其余结点可分为 m(m>0) 个互不相交的有限集 T 1,T 2,,T m,
More informationPowerPoint Presentation
数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg A 第 6 章树 B C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用
More information6.1 树的定义和基本术语 6.2 二叉树 ( 定义 性质 存储结构 ) 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 赫夫曼树及其应用
第六章树与二叉树 树型结构是一类非常重要的非线性结构 直观地, 树型结构是以分支关系定义的层次结构 树在计算机领域中也有着广泛的应用, 例如在编译程序中, 用树来表示源程序的语法结构 ; 在数据库系统中, 可用树来组织信息 ; 在分析算法的行为时, 可用树来描述其执行过程等等 6.1 树的定义和基本术语 6.2 二叉树 ( 定义 性质 存储结构 ) 6.3 遍历二叉树和线索二叉树 6.4 树和森林
More information204 */ InitiateStack s ; /* s */ i = n; t = p = new node; /* */ p->data = postorder[i]; while i > q = new node; if parent[i - ] == postorder[i] S,T S
28 4 Vol.28 No.4 4 204 2 JOURNAL OF NANTONG VOCATIONAL UNIVERSITY Dec. 204!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! doi:0.3969/j.issn.008-5327.204.04.024 唐自立 ( 苏州大学计算机科学与技术学院, 江苏苏州 25006)
More information试卷代号 : 座位号 I II 中央广播电视大学 学年度第二学期 " 开放本科 " 期末考试 数据结构试题 2011 年 7 月! 题号 I - I 二 三 四! 五! 六 总分 分数 I I I 1 1- I ---1 I 得分 评卷人 一 单项选择
试卷代号 : 1 0 1 0 座位号 I II 中央广播电视大学 2 0 1 0-2 0 1 1 学年度第二学期 " 开放本科 " 期末考试 数据结构试题 2011 年 7 月! 题号 I - I 二 三 四! 五! 六 总分 分数 I I I 1 1- I ---1 I 得分 评卷人 一 单项选择题 ( 在括号内填写所选择的标号 每小题 2 分, 共 1 8 分 ) 1. 一种抽象数据类型包括数据和
More information数 6-树.ppt
数据结构华中科技大学计算机学院 第六章树和二叉树 线性结构 : 线性表, 栈, 队列串, 数组, 广义表非线性结构 : 树和二叉树图, 网 2 6.1 树的定义 6.1.1 定义和术语 1. 树 (tree): 树是 n(n 0) 个结点的有限集 T, 当 n=0 时,T 为空树 ; 当 n>0 时, (1) 有且仅有一个称为 T 的根的结点, (2) 当 n>1 时, 余下的结点分为 m(m>0)
More information试卷代号 : 座位号 CD 中央广播电视大学 学年度第二学期 " 开放本科 " 期末考试 数据结构 ( 本 ) 试题 I 题号 - - I 二 l 三 l 四 l 总 分 分数 I I I I I I 2009 年 7 月 得分 评卷人 I I I 一
试卷代号 : 1 2 5 2 座位号 CD 中央广播电视大学 2 0 0 8-2 0 0 9 学年度第二学期 " 开放本科 " 期末考试 数据结构 ( 本 ) 试题 I 题号 - - I 二 l 三 l 四 l 总 分 分数 I I I I I I 2009 年 7 月 得分 评卷人 I I I 一 单项选择题 ( 每小题 2 分如 崎盯扫, 共 3t 3ω O 1. 针对线性表, 在存储后如果最常用的操作是取第
More informationPowerPoint 演示文稿
数据结构与算法 ( 五 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg A 的概念 第五章 B C 的抽象数据类型 深度优先搜索 宽度优先搜索 的存储结构 D E G H F I 二叉搜索树 堆与优先队列 Huffman 树及其应用 2 5.1
More information第六章 树
第六章树和二叉树 本章教学知识点与学习要求 :( 课内教学时数 8 学时, 实践教学时数 2 学时 ) (1) 理解树型结构的基本概念和术语 ; (2) 熟练掌握二叉树的定义 性质及相应的证明方法 ; (3) 熟悉二叉树的各种存储结构的特点及适用范围 ; (4) 熟练掌握二叉树的三种遍历算法, 且能灵活运用遍历算法实现二叉树的其他操作 ; (5) 熟练掌握线索化二叉树的过程, 以及在中序线索化树上找给定结点的前驱和后继
More information新版 明解C++入門編
511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,
More information数据结构
第六讲 二叉树 孙猛 http://www.math.pku.edu.cn/teachers/sunm sunmeng@math.pku.edu.cn 2015 年 10 月 22 日 被猜价格 第一次 第二次 第三次 第四次 第五次 第六次 第七次 39 50 25 37 43 40 38 39 82 50 75 88 82 99 50 75 88 94 97 99 2 课程内容 二叉树及其抽象数据类型
More informationApplications: Haffman Tree 叶结点权值集合为 W={1,3,5,7} 的哈夫曼树的构造过程 可以计算出其带权路径长度为 29, 由此可见, 对于同一组给定叶结点所构造的哈夫曼树, 树的形状可能不同, 但带权路径长度值是相同的, 一定是最小的 第一步 第二步
Data Structure & Algorithm Analysis Trees & Binary Trees Zibin Zheng( 郑子彬 ) School of Data and Computer Science, SYSU http://www.inpluslab.com 课程主页 :http://inpluslab.sysu.edu.cn/dsa2016/ 1 Applications:
More informationMicrosoft PowerPoint - Lecture9.ppt
Chap 10. Index 1 Indexing Goals: Store large files Support multiple search keys Support efficient insert, delete, and range queries 2 Terms(1) Entry sequenced file: Order records by time of insertion.
More information试卷代号 : 座位号 中央广播电视大学 学年度第一学期 " 开放本科 " 期末考试 数据结构试题 2011 年 1 月 题号一四五总分一一 分数 得分 评卷人 一 单项选择题, 在括号内填写所选择的标号 ( 每小题 2 分, 共 1 8 分 ) 1. 执行下
试卷代号 : 1 0 1 0 座位号 中央广播电视大学 2 0 1 0 2011 学年度第一学期 " 开放本科 " 期末考试 数据结构试题 2011 年 1 月 题号一四五总分一一 分数 一 单项选择题, 在括号内填写所选择的标号 ( 每小题 2 分, 共 1 8 分 ) 1. 执行下面程序段时, s 语句的执行次数为 ( ) forcint i= 1; i
More information2.3 链表
数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章线性表 2.1 线性表 2.2 顺序表 tail head a 0 a 1 a n-1 2.4 顺序表和链表的比较 2 链表 (linked list) 通过指针把它的一串存储结点链接成一个链
More information6
孙猛 http://www.math.pku.edu.cn/teachers/sunm 2017 年 10 月 16 日 1 被猜价格第 一次 第 二次 第三次 第四次 第五次 第六次第七次 39 50 25 37 43 40 38 39 82 50 75 88 82 99 50 75 88 94 97 99 2 二叉树及其抽象数据类型 二叉树的周游 二叉树的实现 3 基本概念 二叉树可以定义为结点的有限集合,
More informationFY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
More informationMicrosoft PowerPoint - string_kruse [兼容模式]
Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.
More informationMicrosoft PowerPoint - DS_Ch6.ppt [兼容模式]
数据结构 Ch.6 树 计算机学院 肖明军 Email: xiaomj@ustc.edu.c http://staff.ustc.edu.c/~xiaomj Ch.6 树 树形结构 : 二叉树, 树, 森林等 结点间有分支, 具有层次关系 特征 : 每个结点最多只有一个直接前驱, 但可有多个直间后继. 开始结点 根 终端结点 叶 其余结点 内部结点 应用 : 家谱 行政架构等, 计算机系统中的文件目录等
More information生成word文档
希赛网, 专注于软考 PMP 通信考试的专业 IT 知识库和在线教育平台 希赛网在线题库, 提供历年考试真题 模拟试题 章节练习 知识点练习 错题本练习等在线做题服务, 更有能力评估报告, 让你告别盲目做题, 针对性地攻破自己的薄弱点, 更高效的备考 希赛网官网 :http://www.educity.cn/ 希赛网软件水平考试网 :http://www.educity.cn/rk/ 希赛网在线题库
More information法 2: 不画图也能快速得出后序序列, 只要找到根的位置特征 由前序先确定 root, 由中序先确定左子树 例如, 前序遍历 BEFCGDH 中, 根结点在最前面, 是 B; 则后序遍历中 B 一定在最后面 法 3: 递归计算 如 B 在前序序列中第一, 中序中在中间 ( 可知左右子树上有哪些元素
一 下面是有关二叉树的叙述, 请判断正误 () ( )1. 若二叉树用二叉链表作存贮结构, 则在 n 个结点的二叉树链表中只有 n 1 个非空指针域 ( )2. 二叉树中每个结点的两棵子树的高度差等于 1 ( )3. 二叉树中每个结点的两棵子树是有序的 ( )4. 二叉树中每个结点有两棵非空子树或有两棵空子树 ( )5. 二叉树中每个结点的关键字值大于其左非空子树 ( 若存在的话 ) 所有结点的关键字值,
More information四 读算法 ( 每题 7 分, 共 14 分 ) 1. (1) 查询链表的尾结点 (2) 将第一个结点链接到链表的尾部, 作为新的尾结点 (3) 返回的线性表为 (a 2,a 3,,a n,a 1 ) 2. 递归地后序遍历链式存储的二叉树 五 法填空 ( 每空 2 分, 共 8 分 ) true B
数据结构试卷 ( 一 ) 参考答案 一 选择题 ( 每题 2 分, 共 20 分 ) 1.A 2.D 3.D 4.C 5.C 6.D 7.D 8.C 9.D 10.A 二 填空题 ( 每空 1 分, 共 26 分 ) 1. 正确性 易读性 强壮性 高效率 2. O(n) 3. 9 3 3 4. -1 3 4 X * + 2 Y * 3 / - 5. 2n n-1 n+1 6. e 2e 7. 有向无回路
More informationebook39-5
5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o
More information试卷代号 : 座位号 中央广播电视大学 学年度第二学期 " 开放本科 " 期末考试 数据结构试题 2012 年 7 月 题号一四五总分一一 分数 得分 评卷人 - 单项选择题, 在括号内填写所选择的标号 { 每小题 2 分, 共 1 8 分 ) 1. 下面算法
试卷代号 : 1 0 1 0 座位号 中央广播电视大学 2 0 11 2012 学年度第二学期 " 开放本科 " 期末考试 数据结构试题 2012 年 7 月 题号一四五总分一一 分数 得分 评卷人 - 单项选择题, 在括号内填写所选择的标号 { 每小题 2 分, 共 1 8 分 ) 1. 下面算法的时间复杂度为 ( ) int f( unsigned int n) { if(n= =0 II n=
More informationuntitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
More informationCC213
: (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,
More informationMicrosoft Word - 专升本练习5:图.doc
第五章 图 一 选择题 1. 关键路径是事件结点网络中的 ( ) A. 从源点到汇点的最长路径 B. 从源点到汇点的最短路径 C. 最长的回路 D. 最短的回路 2. 一个具有 n 个顶点和 e 条边的无向图, 采用邻接表表示, 表向量的大小为 ( 1 ), 所有顶点 邻接表的结点总数为 ( 2 ) 1A. n B. n+1 C. n-1 D. n+e 2A. e/2 B. e C. 2e D. n+e
More informationMicrosoft Word - 专升本练习2:线性表.doc
第二章 线性表 一 选择题 1. 线性表是 ( ) A. 一个有限序列, 可以为空 B. 一个有限序列, 不能为空 C. 一个有限序列, 可以为空 D. 一个无序序列, 不能为空 2. 对顺序存储的线性表, 设其长度为 n, 在任何位置上插入或删除操作都是等概率 插入一个元素 时大约要移动表中的 ( ) 个元素, 删除一个元素时大约要移动表中的 ( ) 个元素 A. n/2 B. (n+1)/2 C.
More information华侨大学 2014 年硕士研究生入学考试专业课试卷 B ( 答案必须写在答题纸上 ) 招生专业 计算机技术 科目名称 数据结构与 C++ 科目代码 850 第一部分 C++ ( 总分 75 分 ) 一 单项选择题 (18 分, 每小题 2 分 ) 1. 若有定义 :int a[3][4];, 则表达
华侨大学 2014 年硕士研究生入学考试专业课试卷 B ( 答案必须写在答题纸上 ) 招生专业 计算机技术 科目名称 数据结构与 C++ 科目代码 850 第一部分 C++ ( 总分 75 分 ) 一 单项选择题 (18 分, 每小题 2 分 ) 1. 若有定义 :int a[3][4];, 则表达式 sizeof(a)/sizeof(int[4]) 的值为 ( ) A) 3 B) 4 C) 5 D)
More information<4D F736F F D B8BDBCFE4220D7A8D2B5BBF9B4A1D3EBBACBD0C4BFCEB3CCC3E8CAF62E646F6378>
B212CC: 数据结构与算法 课程描述 0 课程基本信息 课程编号 : B212CC 课程名称 : 数据结构与算法英文名称 : Data Structures and Algorithms 英文简称 : DSA 预备课程 : 计算系统基础 离散数学授课时间 : 二年级第一学期时间分配 : 课堂教学 (48 课时 )+ 实验安排 (48 课时 )+ 课后作业与阅读 (48 课时 ) 学分数 : 3
More information樹
樹 1 Michael Tsai 2013/3/19 2 樹 The family tree of Sigmund Christoph von Waldburg-Zeil-Trauchburg http://www.ahneninfo.com/de/ahnentafel.htm 3 在 CS 的世界裡, 通常我們都把樹畫顛倒 樹根在上面 一棵樹有什麼特性呢? 非線性 (nonlinear), 具階層式的
More information<4D F736F F D20BBAAC4CFC0EDB9A4B4F3D1A72020CAFDBEDDBDE1B9B9B8B4CFB0B1CABCC7D5FBC0ED2E646F63>
数据结构复习笔记整理第二部分复习提纲 ( 不分题型, 弄清原理, 不要死记硬背 ). 简单复杂性的判断 : ()i=n; while(i>=) i=i/2; 其中 i=n,n/2,n/2 2,,n/2 k, 需 n/2 k >=, 即 2 k
More information各章例题 Contents 1 第 1 章例题 2 第 4 章例题 3 第 4-1 章例题 4 第 4-2 章例题 5 第 5 章例题 6 第 7 章例题 7 第 8 章例题 8 第 9 章例题 第 1 章例题 选择题 在数据结构中, 从逻辑上可以把数据结构分成 :( ) A 动态结构和静态结构 B 紧凑结构和非紧凑结构 C 线性结构和非线性结构 D 内部结构和外部结构 答案 C 第 1 章例题 判断题
More information什么是函数式编程?
函数式编程 FUNCTIONAL PROGRAMMING byvoid@byvoid.com 什么是函数式编程? 真相是 从停机问题开始 Bug 假设有停机判定算法 function halting(func, input) { } return if_func_will_halt_on_input; 充分利用停机判定 function ni_ma(func) { if (halting(func,
More information华侨大学2011年硕士研究生入学考试专业课试卷
华侨大学 2016 年硕士研究生入学考试专业课试卷 ( 答案必须写在答题纸上 ) 招生专业计算机技术 ( 专业学位 ) 科目名称数据结构与 C++ 科目代码 850 第一部分数据结构 ( 总分 75 分 ) 一. 单项选择题 ( 每题 1.5 分, 共 12 分 ) 1. 下列关于顺序存储结构的叙述哪一个是错误的?( ) A. 存储密度大 B. 插入操作不方便 C. 不可随机访问任意结点 D. 存储单元的地址是连续的
More informationPowerPoint 演示文稿
数据结构与算法 ( 五 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第五章 的概念 的抽象数据类型 深度优先搜索 宽度优先搜索 的存储结构 D B A E G C H F I 二叉搜索树 堆与优先队列 Huffman 树及其应用 2 的定义
More informationMicrosoft Word - 第5-7章
3 5 1 2 239 1. 1 2 3 2. 1 2 7 1 1 2 3 4 5 A. B. C. D. ABC 2012 240 A. B. C. D. D D 1 7 2 2012 3 10 2 000 100 1 21 000 000 21 000 000 2 21 000 000 21 000 000 2 7 3 A 2012 1 1 1 2012 12 31 600 3 000 4 000
More informationOOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double
More informationSDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
More information运用伸展树解决数列维护问题
运用伸展树解决数列维护问题 By Crash 1 关键词 数列维护问题 伸展树 摘要 对于数列维护问题, 我们常用的一种手段是线段树 但使用线段树有一定的局限性, 本文介绍运用伸展树解决这类问题, 并且可以实现更多的功能 目录 (1) 伸展树的伸展操作 (2) 在伸展树中对区间进行操作 (3) 实例分析 NOI 2005 维护数列 (Sequence) (4) 和线段树的比较 1 Blog 地址 :http://hi.baidu.com/oimaster
More informationuntitled
3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(
More informationebook14-4
4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s
More information华侨大学 2013 年硕士研究生入学考试专业课试卷 ( 答案必须写在答题纸上 ) 招生专业 计算机技术 科目名称 数据结构与 C++ 科目代码 850 第一部分数据结构 ( 共 75 分 ) 一 单项选择题 ( 每小题 2 分, 共 24 分 ) 1. 执行下面程序段时, 则 S 语句的语句频度是
华侨大学 2013 年硕士研究生入学考试专业课试卷 ( 答案必须写在答题纸上 ) 招生专业 计算机技术 科目名称 数据结构与 C++ 科目代码 850 第一部分数据结构 ( 共 75 分 ) 一 单项选择题 ( 每小题 2 分, 共 24 分 ) 1. 执行下面程序段时, 则 S 语句的语句频度是 () for(int i =1;i
More information<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答
More information詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入
100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入
More information浙江师范大学
软件与通信工程学院 数据结构与算法 实验指导书 江西财经大学软件与通信工程学院通信工程系 2016 年 9 月 - 1 - 目录 写在上机实验之前... - 3 - 数据结构与算法( 电子 ) 课程实验教学大纲... - 4 - 实验一线性表链式表示和实现... - 7 - 实验二栈的应用之表达式求值... - 8 - 实验三二叉树的遍历操作... - 10 - 实验四图的遍历操作... - 13
More information第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos(
第一章三角函数 1. 三角函数的诱导公式 A 组 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C ( 中诱导公式 ) B. cos( B C) cos A D. sin( B C) sin A sin60 cos( ) sin( 0 )cos( 70 ) 的值等于
More information<4D F736F F F696E74202D20CAFDBEDDBDE1B9B9B8B4CFB0CCE22E707074>
数据结构与算法 58-1 计算机的算法指的是 (1), 它必须具备 (2) * A.(1) 计算方法,(2) 可执行性, 可移植性, 可扩充性 B.(1) 解决问题的步骤序列,(2) 可执行性, 确定性, 有穷性 C.(1) 排序方法,(2) 确定性, 有穷性, 稳定性 D.(1) 调度方法,(2) 易读性, 稳定性, 安全性 评价一个算法好坏的标准主要是 A 执行时间 B 辅助空间 C 算法本身的复杂度
More information立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769
立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769 前 言 在 计 算 机 统 考 的 四 门 专 业 课 中, 最 难 拿 高 分 的 就 是 数 据 结 构 但 是 这 门 课 本 身 的 难 度 并 不 是 考 生 最 大 的 障 碍, 真 正 的 障 碍
More informationebook39-6
6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT
More information<4D F736F F D E3131CAFDBEDDBDE1B9B9C6DAD6D0BFBCCAD4A3A8BAACB2CEBFBCB4F0B0B8A3A92E646F63>
一 选择题 ( 每小题 2 分, 共 30 分, 奇 偶 ) 1. 从逻辑上可以把数据结构分为 ( ) 两大类. 动态结构 静态结构. 顺序结构 链式结构. 线性结构 非线性结构 D. 初等结构 构造型结构 2. 下面关于线性表的叙述中, 错误的是哪一个?( ). 线性表采用顺序存储, 必须占用一片连续的存储单元. 线性表采用顺序存储, 便于进行插入和删除操作. 线性表采用链接存储, 不必占用一片连续的存储单元
More informationC 1
C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=
More information湖北工业大学二 八年招收硕士学位研究生试卷 则从顶点 A 出发进行深度优先遍历可以得到的序列是 : A.ACEDBFG B.ACDGFBE C.AECDBGF D.ABDGFEC 9 在对 n 个元素的序列进行排序时, 堆排序所需要的附加存储空间是 ( ) A. O(log 2 n) B. O(1)
二 八年招收硕士学位研究生试卷 试卷代号 917 试卷名称数据结构 1 试题内容不得超过画线范围, 试题必须打印, 图表清晰, 标注准确 2 考生请注意 : 答案一律做在答题纸上, 做在试卷上一律无效 一 单项选择题 ( 在每小题列出四个供选择的答案 A B C D 中, 选一个正确的答案, 将其代号填在答卷纸相应题号后的下横线上, 每小题 2 分, 共 20 分 ) 1 以下术语与数据的存储结构无关的是(
More informationMicrosoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx
运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;
More informationOOP with Java 通知 Project 4: 4 月 19 日晚 9 点
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d
More informationMicrosoft Word - cjfg_jy0201.doc
第 二 章 支 付 结 算 法 律 制 度 考 情 分 析 本 章 在 历 年 考 试 中 所 占 的 分 值 比 重 为 20 35 分 左 右 围 绕 支 付 结 算 展 开, 分 别 介 绍 了 现 金 管 理, 银 行 存 款 管 理, 以 及 各 种 支 付 结 算 工 具 本 章 重 点 为 第 四 节, 难 度 稍 高, 需 要 考 生 在 理 解 的 基 础 上 适 当 记 忆 第
More informationTwo Mergeable Data Structures
Two Mergeable Data Structures Disjoint-Set 并查集 & Leftist-Tree 左偏树 1 Disjoint-Set(Union-Find Set) 并查集 N distinct elements into a collection of disjoint sets. Op1: Find which set a given element belong in
More informationC++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1
C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n
More informationMicrosoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
More information《C语言程序设计》教材习题参考答案
教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,
More informationMicrosoft Word - 数据结构实训与习题725xdy.doc
第一部分学习指导与实训 3 第 2 章线性表 2.1 学习指南 (1) 理解线性表的类型定义, 掌握顺序表和链表的结构差别 (2) 熟练掌握顺序表的结构特性, 熟悉顺序表的存储结构 (3) 熟练掌握顺序表的各种运算, 并能灵活运用各种相关操作 (4) 熟练掌握链式存储结构特性, 掌握链表的各种运算 2.2 内容提要 线性表的特点 : 线性表由一组数据元素构成, 表中元素属于同一数据对象 在线性表中,
More informationMicrosoft PowerPoint - Chapter7.ppt
第 7 章树和二叉树 7.1 树的概念和性质 7.2 二叉树的概念与性质 7.3 二叉树的存储结构 7.4 二叉树的遍历 7.5 二叉树的其他操作算法 7.6 线索二叉树 7.7 树的存储结构与算法 7.8 Huffman 树与 Huffman 编码 7.9 树与等价类 树的定义 : 树和森林的概念 是 n(n 0) 个结点的有限集合 T, 对于任意 一棵非空树, 它满足 : (1) 有且仅有一个特定的称为根的结点
More informationMicrosoft PowerPoint - ds-1.ppt [兼容模式]
http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有
More information全国计算机技术与软件专业技术资格(水平)考试
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明
More informationMicrosoft Word - 9502_1-2.doc
北 一 女 中 95 學 年 度 第 二 學 期 高 一 第 二 次 期 中 考 歷 史 科 試 題 範 圍 : 歷 史 ( 下 ) 4-3~8-2 聯 合 命 題 電 腦 卡 務 必 寫 上 座 號 姓 名, 以 便 核 對 劃 記 有 無 錯 誤 未 劃 記 或 畫 卡 錯 誤, 以 致 電 腦 不 能 判 讀 者, 一 律 先 扣 5 分 一 單 選 題 75%( 每 題 3 分 ) 1. 大
More informationChapter12 Derived Classes
继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数
More informationPowerPoint Presentation
第 5 章 树 本章主题 : 树 二叉树 教学目的 : 掌握树和二叉树的类型定义树和二叉树的类型定义 运算及存储结构 教学重点 : 树的各种表示 各种存储方式和运算, 二叉树的概念及其运算和应用 教学难点 : 二叉树的非递归运算及应用 主要内容 : 树 二叉树二叉查找树 树 森林与二叉树的转换 树的应用 2011-11-17 1 本章学习目标 本章主要介绍树的基本概念, 树的存储结构, 树和二叉树
More informationPowerPoint Presentation
第十章文件 外部排序 与搜索 赵建华 南京大学计算机系 文件 什么是文件 文件是存储在外存上的数据结构 文件分操作系统文件和数据库文件 操作系统中的文件是流式文件 : 是没有结构的字符流 数据库文件是具有结构的数据集合 数据结构中讨论的是数据库文件 操作系统对文件是按物理记录读写的, 在数据库中文件按页块存储和读写 文件的组成 文件由记录组成 ; 记录由若干数据项组 成 记录 : 文件存取的基本单位
More information新・明解C言語入門編『索引』
!... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177
More information第 33 届宁波市中小学生信息学能力水平展示活动第一轮试题 第 33 届宁波市中小学生信息学能力水平展示小学组第一轮 pascal 试题 ( 说明 : 答案请填在答题卷上 考试时间 120 分钟, 满分 100 分 ) 一. 选择题 ( 每题 1.5 分, 共 30 分 每小题只有一个正确答案, 多
第 33 届宁波市中小学生信息学能力水平展示小学组第一轮 pascal 试题 ( 说明 : 答案请填在答题卷上 考试时间 120 分钟, 满分 100 分 ) 一. 选择题 ( 每题 1.5 分, 共 30 分 每小题只有一个正确答案, 多选错选均不给分 ) 1 以下不属于计算机硬件的是( ) A. 显示器 B. 内存 C. 操作系统 D. 光盘驱动器 2 以下列扩展名结尾的文件, 是视频文件的是
More informationOOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP
More information数据结构习题
数据结构 习题集 第一章序论 思考题 : 1.1 简述下列术语 : 数据 数据元素 数据对象 数据结构 存储结构 数据类型 抽象数据类型 作业题 : 1.2 设有数据结构 (D,R), 其中 D={d1, d2, d3, d4 R={r1, r2 r1={ , , , , , r2={ (d1, d2),
More information<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>
程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学
More informationPowerPoint Presentation
数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章 线性表 第二章线性表 2.1 线性表 2.2 顺序表 2.3 链表 {a 0, a 1,, a n 1 } a 0 a 1 a 2 a n-1 tail head a
More information概述
OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3
More information7
孙猛 http://www.math.pku.edu.cn/teachers/sunm 2017 年 10 月 19 日 1 堆与优先队列列 哈夫曼树 2 介绍 一种特殊的完全 二叉树 这种 二叉树的顺序存储表示 堆 优先队列列的概念及使 用堆的实现 方法 3 每个结点的值都 小于 ( 或者都 大于 ) 它的左右 子树的根结点的值 这种 二叉树的 广度优先周游序列列顺序表示中, 用于存放结点的顺序表具有如下性质
More informationMicrosoft Word - 2p01
本 章 内 容 比 较 基 础, 主 要 是 为 以 后 章 节 的 学 习 打 好 基 础, 重 点 掌 握 基 本 概 念 考 点 年 份 1. 实 质 重 于 形 式 2006 年 多 项 选 择 题 2. 会 计 要 素 的 确 认 与 计 量 2009 年 单 项 选 择 题 2012 年 判 断 题 3. 谨 慎 性 要 求 2011 年 判 断 题 4. 计 量 属 性 2014 年
More informationStrings
Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A
More informationA.68 B.70 C.80 D.100 答 案 A 解 析 丁 产 品 的 可 变 现 净 值 =110-2=108( 万 元 ), 成 本 =100+40=140( 万 元 ), 可 变 现 净 值 低 于 成 本, 产 品 发 生 的 减 值, 所 以 丙 材 料 的 可 变 现 净 值 =1
2013 年 中 级 会 计 职 称 考 试 中 级 会 计 实 务 真 题 及 答 案 解 析 一 单 项 选 择 题 ( 本 类 题 共 15 小 题, 每 小 题 1 分, 共 15 分 每 小 题 只 有 一 个 符 合 题 意 的 正 确 答 案 请 将 选 定 的 答 案, 按 答 题 卡 要 求, 用 2B 铅 笔 填 涂 答 题 卡 中 相 应 信 息 点 多 选 错 选 不 选 均
More informationOOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class
More informationint *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;
Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,
More informationuntitled
1 5 IBM Intel 1. IBM 第 1/175 页 第 2/175 页 第 3/175 页 80 第 4/175 页 2. IBM 第 5/175 页 3. (1) 第 6/175 页 第 7/175 页 第 8/175 页 = = 第 9/175 页 = = = = = 第 10/175 页 = = = = = = = = 3. (2) 第 11/175 页 第 12/175 页 第 13/175
More information数据结构
9 查找 董洪伟 http://hwdong.com 主要内容 查找的概念 线性查找表 线性查找 折半查找 索引查找 ( 分块查找 ) 二叉查找树 ( 平衡二叉树 ) 二叉查找树 平衡二叉树 哈希查找 ( 散列查找 ) 查找的概念 查找 : 在数据集合中寻找满足某种条件的数据元素 关键字 相当于排序中的排序码 数据元素中某个数据项的值 可以标识一个数据元素 关键字可以相同, 即不一定唯一标识这个元素
More informationC/C++语言 - C/C++数据
C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;
More information中国科学院研究生院
中国科学院大学 2013 年招收攻读硕士学位研究生入学统一考试试题 考生须知 : 1. 本试卷满分为 150 分, 全部考试时间总计 180 分钟 2. 所有答案必须写在答题纸上, 写在试题纸上或草稿纸上一律无效 一 单选题 ( 每小题 2 分, 共 80 分 ) 1. 操作系统负责管理和控制计算机系统的 A. 软件资源 B. 硬件资源和软件资源 C. 对用户有用的资源 D. 硬件资源 2. UNIX
More information生成word文档
希赛网, 专注于软考 PMP 通信考试的专业 IT 知识库和在线教育平台 希赛网在线题库, 提供历年考试真题 模拟试题 章节练习 知识点练习 错题本练习等在线做题服务, 更有能力评估报告, 让你告别盲目做题, 针对性地攻破自己的薄弱点, 更高效的备考 希赛网官网 :http://www.educity.cn/ 希赛网软件水平考试网 :http://www.educity.cn/rk/ 希赛网在线题库
More informationMicrosoft Word - 981192001.htm
098 年 度 11901 電 腦 軟 體 設 計 (JAVA) 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 單 選 題 :
More information树的基本概念 离散数学 树 南京大学计算机科学与技术系 内容提要 树的定义 树的性质 根树 有序根树的遍历 树的定义 定义 : 不包含简单回路的连通无向图称为树 森林 连通分支为树 ) 树叶 / 分支点 度为 1?) 互不同构的 6 个顶点的树 树中的通路 设 是树, 则 u,v V, 中存在唯一的 uv- 简单通路 证明 : 是连通图, u,v V, 中存在 uv- 简单通路 假设 中有两条不同的
More informationMicrosoft Word - ch04三校.doc
4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear
More informationMicrosoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]
Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];
More information全国计算机技术与软件专业技术资格(水平)考试
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2009 年 下 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答
More information