資源簡介
本壓縮包包括一份存儲器與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版本
- 下一篇:餐飲管理系統軟件體系結構分析
評論
共有 條評論