阅读以下说明和C代码,将应填入 (n) 处的字句写在对应栏内。[说明]下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打乱的单词是什么顺序,只要是由r、t、y三个字母组成的均破译为try,大大提高破译速度。程序中借助二叉排序树以进一步提高查找效率,二叉排序树左子树(如果有)上的节点对应的值均小于根节点的值,右子树(如果有)上的节点对应的值均大于根节点的值。函数中使用的符号定义如下:#define NumberofWords 1275//单词总数#define MaxLength 10//最长单词所含字符数char WordList[NumberofWords][MaxLength];//存储单词列表int cmp(Node *q,Node *p);//q与p比较。p小,返回负值;P大返回正值:相等,返回0typedef struct Node(//二叉树节点char *eleLetters;//重组后的字符串int index;//对应单词表中的下标struct Node *lChiId,*rChiid;//左右子节点}Node;[C代码]void reCompose(Node *p,char *temp)//重纰,亦即将temp字符串中的字符升序排序,存储于p节点中//采用直接插入排序法{char c;strcpy(p->eleLetters,temp);//int len=strlen(temp);int i,j,k;for(i=0;i<len-1;i++){k=i;for(j=i+1;j<lan;j++){if(p->eleLetters[j]<P->eleLetters[k])k=J;}if( (1) ){C=P->eleLetters[i];P->eleLetters[i]=P->eleLetters[k];P->eleLetters[k]=c;}//if}//for};int find(Node &root,char *temp)//在二叉排序树root中查找与temp匹配的单词。//若匹配返回相应单词在WordList中下标;若查找失败,返回-1{Node *P,*q;int flag;P= (2) ;//临时存储reCompose(p,temp);//将temp重组q=&root;while((flag= (3) )&&q !=NULL){if(flag<0){//搜索左子树q=q->lChiid;}else(//搜索右子树q=q->rChild;}}//whileif(flag==0){//找到匹配的,保存下标return (4) ;}}if( (5) ){//查找失败printf("cant unscramble the following word:%s",temp);;return -1;}}; (1)处填()。
查看答案
阅读下列说明和C程序,将应填入 (n) 处的字句写在对应栏中。[说明]借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历过程如下:若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。函数中使用的预定义符号如下:typedef struct BiTNode{int data;struct BiTNode *iChiid,*rChiid;} BiTNode,*BiTree;typedef struct SNode{/*链栈的节点类型*/BiTree elem;struct SNode *next;}SNode;[函数]int InOrderTraverse(BiTree root){BiTree P;SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/P=root;while(p !=NULL || stop !=NULL){if( (1) ){ /*不是空树*/q=(SNode*)malloc(sizeof q);if(q==NULL)return-1;/*根节点指针入栈*/(2) ;q->elem=P;stop=q;P= (3) ; /*进入根的左子树*/}else{q=stop;(4) ; /*栈顶元素出栈*/printf("%d|,q->elem->data); /*防问根节点*/P= (5) ; /*进入根的右子树*/free(q); /*释放原栈顶元素*/}/*if*/}/*while*/return 0;}/*InOrderTraverse*/ (1)处填()。
下列与固定资产后续支出有关的叙述中,正确的有( )。
A. 如果后续支出满足固定资产的确认条件,则应当计入固定资产账面价值
B. 以经营租赁方式租人的固定资产发生的改良支出,应予资本化,合理进行摊销
C. 不满足固定资产确认条件的后续支出,应在发生时一次性直接计入当期费用
D. 将后续支出计入固定资产成本的,应当终止确认被替换部分的账面价值
E. 不满足固定资产确认条件的后续支出,应作为长期待摊费用,合理进行摊销
下列各项中,构成固定资产入账价值的有( )。
A. 固定资产购买价款
B. 外币专门借款折合差额
C. 满足借款费用资本化条件的借款利息
D. 购人固定资产发生的运杂费、包装费和安装成本
E. 为取得固定资产而缴纳的契税、耕地占用税、车辆购置税
阅读下列说明和C程序,将应填入 (n) 处的字句写在对应栏中。[说明]借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历过程如下:若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。函数中使用的预定义符号如下:typedef struct BiTNode{int data;struct BiTNode *iChiid,*rChiid;} BiTNode,*BiTree;typedef struct SNode{/*链栈的节点类型*/BiTree elem;struct SNode *next;}SNode;[函数]int InOrderTraverse(BiTree root){BiTree P;SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/P=root;while(p !=NULL || stop !=NULL){if( (1) ){ /*不是空树*/q=(SNode*)malloc(sizeof q);if(q==NULL)return-1;/*根节点指针入栈*/(2) ;q->elem=P;stop=q;P= (3) ; /*进入根的左子树*/}else{q=stop;(4) ; /*栈顶元素出栈*/printf("%d|,q->elem->data); /*防问根节点*/P= (5) ; /*进入根的右子树*/free(q); /*释放原栈顶元素*/}/*if*/}/*while*/return 0;}/*InOrderTraverse*/ (5)处填()。