腾讯技术类校园招聘笔试试题及答案(4)
学习啦在线学习网 二. 填空题(共40分)
本程序从正文文件text.in读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.
程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出.
程序中的外部函数
int getword(FILE* pFile,char* pszWordBuffer,int nBufferLen);
从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无单词可读时,则返回0.
#include
#include
#include
#include
#define SOURCE_FILE "text.in"
学习啦在线学习网 #define OUTPUT_FILE "word.out"
#define MAX_WORD_LEN 128
typedef struct treenode
{
学习啦在线学习网 char szWord[MAX_WORD_LEN];
int nCount;
学习啦在线学习网 struct treenode* pLeft;
struct treenode* pRight;
}BNODE;
学习啦在线学习网 int getword(FILE* pFile,char* pasWordBuffer,int nBufferLen);
学习啦在线学习网 void binary_tree(BNODE** ppNode,char* pszWord)
{
学习啦在线学习网 if(ppNode != NULL && pszWord != NULL)
{
BNODE* pCurrentNode = NULL;
BNODE* pMemoNode = NULL;
int nStrCmpRes=0;
____(1)_____;pCurrentNode=*ppNode
学习啦在线学习网 while(pCurrentNode)
{
学习啦在线学习网 /*寻找插入位置*/
学习啦在线学习网 nStrCmpRes = strcmp(pszWord, ___(2)___ );pCurrentNode->nCount
学习啦在线学习网 if(!nStrCmpRes)
{
___(3)___; pCurrentNode->nCount++
return;
}
else
{
___(4)___; pMemoNode=pCurrentNode
pCurrentNode = nStrCmpRes>0? pCurrentNode->pRight : pCurrentNode->pLeft;
}
}
}
pCurrent=new BNODE;
if(pCurrentNode != NULL)
{
memset(pCurrentNode,0,sizeof(BNODE));
strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);
pCurrentNode->nCount=1;
}
if(pMemoNode==NULL)
{
___(5)___; *ppNode= pCurrentNode
}
else if(nStrCmpRes>0)
{
学习啦在线学习网 pMemoNode->pRight=pCurrentNode;
}
else
{
pMemoNode->pLeft=pCurrentNode;
}
}
void midorder(FILE* pFile,BNODE* pNode)
{
学习啦在线学习网 if(___(6)___) return;!pNode||!pFile
学习啦在线学习网 midorder(pFile,pNode->pLeft);
fprintf(pFile,"%s %d\n",pNode->szWord,pNode->nCount);
学习啦在线学习网 midorder(pFile,pNode->pRight);
}
void main()
{
FILE* pFile=NULL;
BNODE* pRootNode=NULL;
学习啦在线学习网 char szWord[MAX_WORD_LEN]={0};
学习啦在线学习网 pFile=fopen(SOURCE_FILE,"r");
学习啦在线学习网 if(pFile==NULL)
{
printf("Can't open file %s\n",SOURCE_FILE);
return;
}
学习啦在线学习网 while(getword(pFile,szWord,MAX_WORD_LEN)==1)
{
学习啦在线学习网 binary_tree(___(7)___);// pRootNode,szWord
}
学习啦在线学习网 fclose(pFile);
pFile=fopen(OUTPUT_FILE,"w");
学习啦在线学习网 midorder(pFile,pRootNode);
学习啦在线学习网 fclose(pFile);