资源简介
本压缩包包括一份存储器与CPU连接的作业,作业形式为ppt,word。另外添加了20套与存储器有关的试卷附有答案,作业内容如下:
某系统CPU地址总线20条,数据总线8条,存储器系统由8KB的ROM(用2K*8位的2716芯片)和1KB的RAM(用1K*4位的2142芯片)组成,译码器采用74LS138。要求:
画出CPU和存储器的连接图(采用全译码方式);
确定地址范围(ROM处于低地址,RAM处于高地址);
利用下列规范的逻辑电路符号表示(见附录)
用Powerpoint做出演示电子版,两页,一页连接图,另一页为地址范围。
代码片段和文件信息
#define MAX_NUM 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define Status int
#define LH 1 //左高
#define RH -1 //右高
#define EH 0 //等高
#define TETYPE “%c“
#define TElemType char
#include
#include
#include
#include
typedef struct BSTNode
{
TElemType data;
int bf; //结点的平衡因子
struct BSTNode *lchild *rchild;//左.右孩子指针
}BSTNode *BSTree;
//***********基本操作***************************************
void Visit(BSTree T)
{
printf(TETYPE T->data);
printf(“(%d)“ T->bf);
printf(“ “);
}
Status BSTreeEmpty(BSTree T)
//初始条件:平衡二叉排序树存在。
//操作结果:若T为空平衡二叉排序树,则返回TRUE否则FALSE.
{
return (T ? FALSE : TRUE);
}
int BSTreeDepth(BSTree T)
//初始条件:平衡二叉排序树存在。操作结果:返回T的深度。
{
int L_depthR_depth;
if(T==NULL)
return 0;
else
{
if(T->lchild)
L_depth = BSTreeDepth(T->lchild);
else
L_depth = 0;
if(T->rchild)
R_depth = BSTreeDepth(T->rchild);
else
R_depth=0;
return (L_depth >= R_depth ? L_depth : R_depth)+1;
}
}
int LeafNum(BSTree T)
//求叶子结点数,非递归中序遍历
{
BSTree s[MAX_NUM]; int i=0num=0; BSTree p;
if(T)
{
s[i++]=T;
while(i)
{
while((p=s[i-1])&&p)
s[i++]=p->lchild;
--i;//空指针出
if(i)
{
p=s[--i];
if(!p->lchild&&!p->rchild)
{
num++;
Visit(p);
putchar(‘ ‘);
}
s[i++]=p->rchild;
}
}
}
return num;
}
int NodeNum(BSTree T)
//求结点数,非递归中序遍历
{
BSTree s[MAX_NUM]; int i=0num=0; BSTree p;
if(T)
{
s[i++]=T;
while(i)
{
while((p=s[i-1])&&p)
s[i++]=p->lchild;
--i;//空指针出
if(i)
{
p=s[--i];
num++;
s[i++]=p->rchild;
}
}
}
return num;
}
void DestoryBSTree(BSTree *T)
//后序遍历销毁平衡二叉排序树T
{
if(*T)
{
if((*T)->lchild)
DestoryBSTree(&(*T)->lchild);
if((*T)->rchild)
DestoryBSTree(&(*T)->rchild);
free(*T);
*T = NULL;
}
}
void R_Rotate(BSTree *p)
{//对以*p为根的平衡二叉排序树作右旋处理,处理之后p指向新的树根结点
//即旋转处理之前的左子树的根结点
BSTree lc = NULL;
lc = (*p)->lchild; //lc指向*p的左子树根结点
(*p)->lchild = lc->rchild;//lc的右子树挂接为*p的左子树
lc->rchild = *p;
*p = lc; //p指向新的根结点
}
void L_Rotate(BSTree *p)
{//对以*p为根的平衡二叉排序树作左旋处理,处理之后p指向新的树根结点,
//即旋转处理之前的右子树的根结点
BSTree rc = NULL;
rc = (*p)->rchild; //rc指向*p的右子树根结点
(*p)->rchild = rc->lchild;//rc的左子树挂接为*p的右子树
rc->lchild = *p;
*p = rc; //p指向新的根结点
}
void LeftBalance(BSTree *T)
{//对以指针T所指结点为根的平衡二叉排序树作左平衡旋转处理,
//本算法结束时,指针T指向新的根结点
BSTree lc = NULL rd = NULL;
lc = (*T)->lchild; //lc指向*T的左子树的树根结点
switch(lc->bf) //检查*T的左子树的平衡度,并作相应的平衡处理
{
case LH: //新结点插入在*T的左孩子的左子树上,要作单右旋处理
(*T)->bf = lc->bf = EH;
R_Rotate(T);
break;
case RH: //新结点插入在*T的左孩子的右子树上,要作双旋处理
rd = lc->rchild; //rd指向*T的左孩子的右子树的根
switch(rd->bf) //根据其的平衡度,修改*T及其左孩子的平衡因子
{
case LH:
(*T)->bf = RH;
lc->bf = EH;
break;
case EH:
(*T)->bf = l
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20360 2009-12-22 16:15 b.c
文件 188452 2009-12-22 16:10 b.exe
----------- --------- ---------- ----- ----
208812 2
- 上一篇:arcgis 快速制图插件v2.0版本
- 下一篇:餐饮管理系统软件体系结构分析
相关资源
- 更改cpu显示型号
- 8086CPU音乐盒设计
- VHDL语言CPU设计报告
- 计算机原理课设,设计cpu006.rar
- STM32 FM25CL64B 铁电存储器
- 计算机组成大作业 logisim单周期设计
- 模型机设计CPU3版本3.0
- 模型机CPU设计CPU2.版本2.0时序资源性能
- MIPS CPU设计、理想指令流水线设计
- Labview查看CPU、内存使用情况.vi
- 单周期处理器
- logisim单周期CPU283100
- logisim搭建32位单周期CPU
- e语言-多线程的使用易语言源码自动指
- MIPS五级流水线CPU(verilog实现)
- 复旦微电子M1和CPU卡读卡机芯片FM170
- 计组课设基于FPGA的CPU设计
- 读取stm32全球唯一ID
- cpuid.h文件
- 三菱Q173D运动CPU SV22 OS
- 《自己动手写CPU》书中代码
- linux 运维自动监测脚本CPU,内存,磁
- SIMD指令集大全
- 如何仿真两个CPU之间的通信西门子S
- logisim画CPU:8位可控加减法电路设计
- Logisim单周期CPU 通过测试
- CPU型号修改器——利用该软件可以快
- SUNPLUS CPU6502 Instruction Manual汇编指令集
- 操作系统 段页式存储器管理
- 自己动手写CPU第4阶段第一条指令ori的
评论
共有 条评论