题目内容 (请给出正确答案)
[主观题]

阅读以下说明和C语言函数,将应填入(n)处。[说明] 二叉排序树或者是一棵空树,或者是具有如下性质的

阅读以下说明和C语言函数,将应填入(n)处。

[说明]

二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二义排序树。

函数insert_BST(char *str)的功能是:对给定的字符序列按照ASCⅡ码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的Count域对字符的重复次数进行计数。

二叉排序树的链表结点类型定义如下:

typedef struct BSTNode{

char Elem; /*结点的字符数据*/

int Count; /*记录当前字符在序列中重复出现的次数*/

struct BSTNode *Lch,*Rch; /*接点的左、右子树指针*/

}*BiTree;

[函数]

BiTree insert_BST(char *str)

{ BiTree root,parent,p;

char (1); /*变量定义及初始化 */

root=(BiTree)malloc(sizeof(struct BSTNode));

if(!root||*s=='\0') return NULL;

root->Lch=root->Rch=NULL; foot->Count=1; root->Elem=*s++;

for(; *s!='\0';s++) {

(2); parent=NULL;

while (p){ /*p从树跟结点出发查找当前字符*s所在结点 */

parent = p;

if(*s==p->Elem)/*若树中已存在当前字符结点,则当前字符的计数值加1*/

{p->Count++; break;}

else /*否则根据字符*s与结点*p中字符的关系,进入*p的左子树或右子树*/

if (*s>p->Elem) p=p->Rch;

else p=p->Lch;

}/*while*/

if((3)) {/* 若树中不存在字符值为*s的结点,则申请结点并插入树中 */

p=(BiTree)malloc(sizeof(struct BSTNode));

if(!p)return NULL;

p->Lch=p->Rch=NULL; p->Count=1; p->Elem=*s;

/*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入*/

if(p->Elem>parent->Elem) (4)=p;

else (5)=p;

}

}/*for*/

return root;

}

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读以下说明和C语言函数,将应填入(n)处。[说明] 二叉排…”相关的问题

第1题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 本程序实现对指定文件

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。

[C程序]

include <stdio.h>

include <ctype.h>

include <string.h>

define MAXWORD 100

struct node {

char*word;

int count;

struct node*left;

struct node*right;

}

struct node*addtree(struct node*P,char*w)

{ int cond;

if(p==NULL){ /*向树中插入结点*/

P=(struct node*)malloc(sizeof(struct node));

P->word=strdup(w);

P->count=1;

(1) ;

}

elseif((oond=strcmp(w,p->word))==0) (2) ;

else if(cond<0)p->left=(3);

else p->right=(4);

return p;

}

main()

{ Struct node*root;

char word[MAXWORD];

root=NULL;

filename="example.dat";

while(getword(filename,word)!=EOF))

root=(5);

}

点击查看答案

第2题

阅读以下说明和流程图,回答问题将解答填入对应栏。 [说明] 下面的流程图,用来完成计算一组数组

阅读以下说明和流程图,回答问题将解答填入对应栏。

[说明]

下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于n/2,则已经找到了中值,否则继续之前的步骤。

注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述;

[问题]

将流程图的(1)~(5)处补充完整。

点击查看答案

第3题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 已知r[1...n]是n个记

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

已知r[1...n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录。若查找失败,则输出“failure",函数返回值为0;否则输出“success”,函数返回值为该记录的序号值。

[C函数]

int binary search(struct recordtype r[],int n,keytype k)

{ intmid,low=1,hig=n;

while(low<=hig){

mid=(1);

if(k<r[mid].key) (2);

else if(k==r[mid].key){

printf("succesS\n");

(3);

}

else (4);

}

printf("failure\n");

(5);

}

点击查看答案

第4题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明1] 函数void fun(char*w

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明1]

函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

[C函数1]

void fun(char*W,char x,int*n)

{ int i,P;

p=0;

w[*n]=x;

while(x>w[p]) (1) ;

for(i=*n,i>p;i--)w[i]=(2);

w[p]=x;

++*n;

}

[说明2]

函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

[C函数2]

void revstr(char*s)

{ char*p,c;

if(s==NULL)return;

p=(3); /*p指向字符串s的最后一个有效字符*/

while(s<p){ /*交换并移动指针*/

C=*s;

(4)=*p;

(5)=c;

}

}

点击查看答案

第5题

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。[说明] 下面的程序演示了

阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。

[说明]

下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对剩下的部分采用同样的方法,直到全部排序完成。

程序界面中,左右两个文本框分别用于存放随机产生的奖牌数以及生成的奖牌榜,名为Text1和Text2,上下两个按钮分别名为Command1和Command2。代码中使用的量主要有:一维数组 cntries,用于存储10个国家的名称,二维数组medals,其元素medals(i,0)和medals(i,1)分别用于存放第i个(i从0开始)国家的金、银牌数目。

[Visual Basic代码]

Dim cntries(10) As String, medals(10,2) As Integer

’随机产生奖牌数

Sub newMedals()

…… ’为数组cntries和medals赋值

End Sub

’输出奖牌榜

Sub printOut(txt As (1) )

Dim strResuh As String, i As Integer

strResult=“国家”& Chr(9) &“金牌数”& Chr(9) &“银牌数”& vbCrLf

For i=0 To 9

strResult = strResult & cntries(i) & Chr(9) & medals(i,0) & Chr(9) & medals(i,1) & vbCrLf

Next

txt.Text = strResult

End Sub

’交换两变量的值

Sub exchange( (2) a As Variant, (2) b As Variant)

Dim temp As Variant

temp = a: a = b: b = temp

End Sub

’随机产生并输出奖牌数

Private Sub Command1_Click()

newMedals

printOut Text1

End Sub

’生成并输出奖牌榜

Private Sub Command2_Click()

Dim i,j, k As Integer, temp As String

For i = 0 To 9 ’按金牌数排序

j = i ’找到自第i个位置起全部数据中金牌得数最多者,记其下标为j

For k = i + 1 To 9

If (3) Then j=k

Next

If i < > j Then ’若i,j不等,则交换对应位置的国家名、金银牌数目

exchange cntnes(i), entries(j)

exchange medals(i, 0), medals(j, 0)

exchange medals(i, 1), medals(j, 1)

End If

Next

For i = 0 To 9 ’按银牌数进行二次排序

j = i

For k = i + 1 To 9

If medals(k,0) <> medals(j, 0) Then (4)

If (5) Then j = k

Next

If i < > j Then

exchange cntries(i), cntries(j)

exchange medals(i, 1), medals(j, 1)

End If

Next

printOut Text2

End Sub

点击查看答案

第6题

阅读下列程序说明和C程序,将应填入(n)处的字句写在对应栏内。[函数2.1说明] 下面程序的功能是计算

阅读下列程序说明和C程序,将应填入(n)处的字句写在对应栏内。

[函数2.1说明]

下面程序的功能是计算x和y的最小公倍数。

[函数2.1]

main()

{ int m,n,d,r;

seanf("%d %d",&m,&n);

if(m<n) {r=m;m=n;n=r;}

(1);

while (d%n! =0) (2);

printf("%d\n",d);

}

[函数2.2说明]

下述程序接收键盘输入,直到句点“.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。

[函数2.2]

include <stdio.h>

main()

{ char c,preChar='\0';

c = getchar();

while(c! = '.'){

if((3)) putchar(c);

else if(preChar! =' ') putchar(c);

(4);

c=(5);

}

}

点击查看答案

第7题

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明] 本程序在3×3方格中填入1到10以

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明]

本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。

方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。

为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。

[程序]

include <stdio.h>

int pos,a[9],b[11]; /*用于存储方格所填入的整数*/

void write(int a[]) /*方格输出函数*/

{ ……}

int isPrime(int m) /*素数判断函数,若m为素数则返回1,否则返回0*/

{ ……}

int selectNum(int start) /*找到start到10之间尚未使用过的最小的数,若没有则返回0*/

{ int j;

for(j=start;j<=10;j++) if(b[j]) return j;

return0;

}

int check() /*检查填入pos位置的整数是否合理*/

{ int i,j

int checkMatrix[][3]={{-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,- 1},{4,6,-1},{5,7,-1}};

for(i=0;(j=(1))>=0;i++)

if(! isPrime((2)))return 0;

return 1;

}

void extend() /*为下一方格找一个尚未使用过的整数*/

{ (3)=selectNum(1);

b[a[pos]]=0;

}

void change() /*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/

{ int j;

while(pos>=0&&(j=selectNum(a[pos]+1))= =0) b[a[pos- -]]=1;

if(pos<0)return;

(4);a[pos] =j;b[j]=0; }

void find()

{ int k=1;

pos=0;a[pos]=1;b[a[pos]]=0;

do{

if(ok)

if( (5) ){

write(a);change();

}

else extend();

else change();

k=check(pos);

}while(pos>=0);

}

void main()

{ int i;

for(i=1;i<=10;i++)b[i]=1;

find();

}

点击查看答案

第8题

阅读以下说明和流程图,回答问题1-2,将解答填入对应的解答栏内。[说明] 下面的流程图采用欧几里得

阅读以下说明和流程图,回答问题1-2,将解答填入对应的解答栏内。

[说明]

下面的流程图采用欧几里得算法,实现了计算两正整数最大公约数的功能。给定正整数m和 n,假定m大于等于n,算法的主要步骤为:

(1)以n除m并令r为所得的余数;

(2)若r等于0,算法结束;n即为所求;

(3)将n和r分别赋给m和n,返回步骤(1)。

[流程图]

[问题1] 将流程图中的(1)~(4)处补充完整。

[问题2] 若输入的m和n分别为27和21,则A中循环体被执行的次数是(5)。

点击查看答案

第9题

已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和;类SuperClass中的getSum为抽

象函数,程序中的第14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第22行且尚未执行第22行语句时成员变量i的值,最后给出程序运行后的输出结果。

[Java代码]

行号 代码

01 public class UainJava{

02 public static void main(String[]args){

03 SuperClass s=new SubClass();

04 System.out.printin(s.getValue());

05 System.out.printIn(s.getSum()):

06 }

07 }

08 abstract class SuperClass {

09 private int i;

10 public SuperClass(){i=5;}

11 public int getValue(){

12 return i:

13 }

14 public final abstract int getSum():

15 }

16 class SubClass extends SuperClass{

17 int j;

18 public SubClass(){

19 this(-3);

20 }

21 public SubClass(int j){

22 (1) .j=j;

23 }

24 publiC int getValue()(return j;}

25 public int getSum(){

26 return (2) .getValue()+j;

27 }

28

点击查看答案

第10题

阅读下列程序说明和C程序,将应填入(n)处的字句写在对应栏内。[说明] 本程序将自然数1,2,……,N2(N=5

阅读下列程序说明和C程序,将应填入(n)处的字句写在对应栏内。

[说明]

本程序将自然数1,2,……,N2(N=5)按蛇形方式逐个顺序存入N阶矩阵。令n=N-1,则矩阵中的每一元素可用aij标记,其中i,j(0≤i,j≤n)分别为其所在行的行号和所在列的列号。蛇形方式顺序存放的方法是从an0开始、到a0n为止,依次填入由1递增的自然数,交替地对每一斜列从左上角向右下角或从右下角向左上角排列。程序的输出为:

[程序]

include <stdio.h>

include <math.h>

define SIZE.10

int a[SIZE] [SIZE],k;

void write(int n) /*输出矩阵*/

{ int i,j;

for(i=0;i<=n;i+ +){

for(j=0; j<=nj j+ +)

printf("%4d",a[i][j]);

printf("\n");

}

}

void makeline(int row_start, int col_start, int row_end) /*完成矩阵一条斜线的整数填写*/

{ int i,j, sign;

sign=((1)> =0)? 1:-1;

for(i = row_start,j = col_start; (row_end-i) * sign>=0; i+=sign,j+=sign)

a[i][j]=(2);

}

void makeArray(int n) /*完成矩阵每条斜线的整数填写*/

{ int d;

for(d=1;d<=(3);d+ +)

if(d< =n+1)

if(d%2)

makeline((4));

else

makeline(n+1-d,0,n);

else

if(d%2)

makeline((5));

else

makeline(0,d-n-1,2*n-d+1);

}

void main()

{ int n, N=5;

k=1; n=N-1;

makeArray(n);

write(n);

}

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信