集合及其表示
集合是成员的一个群集
成员可以是原子,也可以是集合
成员互不相同
同一集合中所有成员具有相同的数据类型
表示
用位向量实现
用有序链表实现
位向量
当集合是由有限的可枚举的成员组成时,可建立集合成员与整数0、1、2、…的一一对应关系,用位向量表示该集合的子集
{red, yellow, black, white, blue} 0 1 1...
树和森林概念
自由树
定义为二元组Tf={V,E}T_f = \{ V, E\}Tf={V,E}
V为顶点集合
E为边集合
有根树
有n个结点
r是根节点
根以外的是子树
12345678910111213template <class Type> class Tree { public: Tree ( ); ~Tree (...
多维数组特殊矩阵对称矩阵三对角矩阵
[a00,a01,a10,a11,a12,a13,a21,…,an−1n−2,an−1n−1][a_{00}, a_{01}, a_{10}, a_{11}, a_{12}, a_{13}, a_{21},… ,a_{n-1n-2}, a_{n-1n-1}][a00,a01,a10,a11,a12,a13,a21,…,an−1n−2,an−...
遍历递归1234567void recur(Node* head){ if (head == NULL){ return ; } recur(head->left); recur(head->right);}
非递归先序遍历(深度优先)
从栈中弹出一个节点cur
打印(处理)cur
先右后左加入栈(如...
栈
只在一端插入和删除的线性表(栈顶)
后进先出(LIFO)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455template <class T>class Stack {private: int top; /...
归并排序
分解
排序
合并
123456789101112131415161718192021222324252627282930void merge(int[] arr, int l, int mid, int r){ int n1 = l; int n2 = mid + 1; int help[r - l + 1]; int i = 0; ...
交换交换int a 和 int b的位置
123456int a = 10;int b = 20;a = a ^ b;b = a ^ b; //b = a ^ b ^ b = aa = a ^ b; //a = a ^ b ^ b(a) = b
a和b不能是同一个数(内存意义上),否则结果会是0
数组查找一个有奇数个的数字(其余全偶数个)
^具有交换律:a ^ ...
线性表概念n个数据元素的有限序列
特点
除第一个元素外,其他每个元素有且仅有一个只有一个直接前驱
除最后一个元素外,其他每个元素有且仅有一个只有一个直接后继
抽象基类1234567891011121314151617181920template <class T, class E>class LinearList {public: LinearList(); /...
1.流水线CPU概述
取指令IF
指令译码ID
执行EX
访存M
写回WB
2.指令的流水段分析3.流水线数据通路的设计
4.流水线控制器的设计
1.多周期数据通路的设计
分阶段
取指令阶段
执行一次存储器读操作
读出的内容保存到寄存器IR(指令寄存器)中
IR的内容不是每个始终都更新,所以IR必须加一个“写使能”控制
在取指令阶段结束时,ALU输出为PC+4,并送到PC的输入端,但不能在每个时钟到来时就更新PC,所以PC也要有“写使能”控制
译码/读寄存器堆阶段
经过控制逻辑延迟后,控制信号更新为新值
执行一次寄存器读...