1 / 9
文档名称:

计算机水平考试-中级软件设计师下午试题模拟33.docx

格式:docx   大小:77KB   页数:9页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机水平考试-中级软件设计师下午试题模拟33.docx

上传人:小博士 2022/6/30 文件大小:77 KB

下载得到文件列表

计算机水平考试-中级软件设计师下午试题模拟33.docx

相关文档

文档介绍

文档介绍:中级软件设计师下午试题模拟3 3
试题一
阅读下列说明和流程图,回答问题1至问题3,将解答写在对应栏内。
【说明】
流程图描述了某宽带数据专线管理系统的部分处理流程。
凡申请宽带数据专线使用者,均需填写专线申请表。系统把申】
函数DeleteNode (Bitree *r, int e)的功能是:在树根结点指针为r的二叉查找(排序) 树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定 义为:
typedef struct Tnode(
int data; /*结点的键值*/
struct Tnode *Lchild, *Rchild; /*指向左、右子树的指针*/
} *Bitree:
在二叉查找树上删除一个结点时,要考虑3种情况:
若待删除的结点p是叶子结点,则直接删除该结点;
若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删 除结点P;
若待删除的结点P有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用 结点S的值代替结点P的值,然后删除结点S,结点S必属于上述①、②情况之一。
【函数】
int DeleteNode (Bitree *r, int e) {
Bitree p=*r,pp, s, c;
while (⑴){ /*从树根结点出发查找键值为e的结点*/
PP=P;
if (e<p- >data) p=p- >Lchild;
else p=p->Rchild;
}
if ( !P) return-1; /*查找失败大/
if (p->Lchild && p->Rchild) {/*处理情况③大/
s= (2) ; pp=p
while (3) (pp=s; s = s->Rchild; }
p- >data=s- >data; p=s;
}
/*处理情况①、②*/
if ( (4) ) c=p->Lchild;
else c=p->Rchild;
if(p==*r) *r=c;
else if ( (5) ) pp->Lchild=c;
else pp->Rchild=c;
free (p);
return 0;
}
试题五
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。
5、 【说明】
C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模 板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断, 并给出相应的提示信息。
#include<iostream. h>
template <class T> class Array;
template <class T> class ArrayBody (
friend (1)
T* tpBody;
int iRows, iColumns, iCurrentRow;
ArrayBody (int iRsz, int iCsz) (
tpBody = (2)
iRows = iRsz; iColumns =iCsz; iCurrentRow =-l;
}
public:
T& operator [] (int