下载APP
【简答题】
【说明】 本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点内容输出。 【函数】 # include <stdio.h> # include <malloc.h> # include <ctype.h> # include <string.h> # define INF "text.in" # define OUTF "word.our’ typedef struct treenode { char *word; int count; struct treenode *left, *right; } BNODE; int getword(FILE *fpt, char *word) { char c; c=fgetc(tpt); if (c==EOF) return 0; while(!(tolower(c)>= ’a’ && tolower(c)<= ’z’)) { c=fgetc(fpt); if (c==EOF) return 0; } /* 跳过单词间的所有非字母字符 */ while(tolower(c)>= ’a’ && tolower(c)<= ’z’) { *word++=c; c=fgetc(fpt); } *word=’\0’; return 1; } void binary_tree(BNODE **t, char *word) { BNODE *ptr, *p; int compres; p=NULL;
(1)
; while (ptr) /* 寻找插入位置 */ { compres=strcmp(word, ptr->word);/* 保存当前比较结果 */ if (!compres) {
(2)
; return;} else { p=ptr; ptr=compres>0 ptr->right: ptr->left; } } ptr=(BNODE *)malloc(sizeof(BNODE)); ptr->left=ptr->right=NULL; ptr->word=(char *)malloc(strlen(word)+1); strcpy(ptr->word, word);
(3)
; if (p==NULL) *t=ptr; else if (compres>0) p->right=ptr; else p->left=ptr; } void midorder(FILE *fpt, BNODE *t) { if (t==NULL) return; midorder(fpt,
(4)
); fprintf(fpt, "%s %d\n", t->word, t->count); midorder(fpt, t->right); } void main() { FILE *fpt; char word[40]; BNODE *root=NULL; if ((fpt=fopen(INF, "r"))==NULL) { printf("Can’t open file %s\n", INF); return; } while(getword(fpt, word)==1) binary_tree(
(5)
); fclose(fpt); fpt=fopen(OUTF, "w"); if (fpt==NULL) { printf("Can’t open fife %s\n", OUTF); return; } midorder(fpt, root); fclose(fpt); }
题目标签:
字母字
二叉树
插入位置
举报
如何制作自己的在线小题库
参考答案:
参考解析:
刷刷题刷刷变学霸
举一反三
【单选题】设森林F中有三棵树T1、T2、T3,节点个数分别为m1、m2、m3。与森林F对应的二叉树根结点的右子树上的节点个数是
A.
m1
B.
m1+m2
C.
m1+m2+m3
D.
m2+m3
查看完整题目与答案
【单选题】对下面的二叉树进行中序线索化后,结点f的右指针指向的结点是
A.
a
B.
b
C.
c
D.
e
查看完整题目与答案
【单选题】设计算法判定给定二叉树是否为二叉排序树。 void BSTree(BiTree t,int &flag,int &last);// 声明 Status IsBSTree(BiTree t) { int flag = 1; int last =0; BSTree(t,flag,last); return flag; } void BSTree(BiTree t,int &flag,int &last...
A.
BSTree(t->rchild,flag,last);
B.
BSTree(t->lchild,flag,last);
C.
BSTree(t->rchild,last,flag);
D.
BSTree(t->lchild,last,flag);
查看完整题目与答案
【单选题】线索二叉树是一种( )结构。
A.
物理
B.
逻辑
C.
存储
D.
线性
查看完整题目与答案
【判断题】用二叉树的先序序列和后序序列可以导出它的中序序列。
A.
正确
B.
错误
查看完整题目与答案
【单选题】下面程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是( )。 Private Sub Command1 Click() Dim Num(25)As Integer,Chr1 As String Chr1=UCase(InputBox("请输入字母字符串")) For k=1 To Len(Chr1) n=Asc(Mid(Chr1,k,1))-Asc("A"...
A.
3
B.
2
C.
1
D.
0
查看完整题目与答案
【判断题】16进制数有16个字符,其中有6个是字母字符。
A.
正确
B.
错误
查看完整题目与答案
【简答题】一棵具有257个结点的完全二叉树,它的深度为()。(填数字)。
查看完整题目与答案
【单选题】若一棵二叉树中 度为 1 的结点个数为 20 个, 度为2 的结点个数为 10 个, 则该二叉树中度为 0 的结点个数为( )个。
A.
9
B.
11
C.
19
D.
21
查看完整题目与答案
【单选题】下面程序运行时,若输入“Visual Basic Prograrmming”,则在窗体上输出的是( )。Private Sub Command1Click( )Dim cout(25)As Integer,ch As Stringch=Ucase(Int,utBox("请输入字母字符串"))For k=1 To i en(ch). n=ASC(Mid(ch,k,1))-Asc("A")If n&g...
A.
0
B.
1
C.
2
D.
3
查看完整题目与答案