一道微软MiniTest笔试题
来源:互联网 发布:lededitor软件下载 编辑:程序博客网 时间:2024/05/02 01:05
题目描述:
1,一个文件中存有空格分开的单词
现在要将这个文件读入到另外一个文件,保存格式如下:
live evil
search casher
........
就是含有相同字母的单词要放到一行。
用c实现,可以使用fopen,fread,fwrite等
接口:
bool TransferDictionary(char * OriginalFile,char * NewFile);
我的解法:
/**//********************************************************
作者:Bring.Zhang 时间:2006.10
文件名:main.cpp
题目描述:
1,一个文件中存有空格分开的单词
现在要将这个文件读入到另外一个文件,保存格式如下:
live evil
search casher
........
就是含有相同字母的单词要放到一行。
用c实现,可以使用fopen,fread,fwrite等
接口:
bool TransferDictionary(char * OriginalFile,char * NewFile);
*******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <memory.h>
#include <string.h>
typedef struct word_tag//单词结点
...{
char* word;
struct word_tag* next;
// WordNode(){word=NULL; next=NULL;}
}WordNode;
typedef struct head_node_tag//链接的头结点
...{
WordNode* link;
struct head_node_tag* next;
int value;
int count;
// WordHeadNode(){link=NULL; next=NULL; value=0;count=0;}
}WordHeadNode;
WordHeadNode * start=NULL;
bool TransferDictionary(char* OriginalFile,char*NewFile);
char* ReadFile(const char* fname);
int GetValue(const char* word);
bool InsertNode(char* word);
void FreeSpace(WordHeadNode* start);
bool InsertNode(char* word)
...{
WordHeadNode *head,*pre,*pTmp;
WordNode * node,*npTmp;
int tmp;
pTmp = start;
if (start == NULL)
...{
head = (WordHeadNode*)malloc(sizeof(WordHeadNode));
//初始化
head->count = 0;
head->link = NULL;
head->next = NULL;
head->value = 0;
start = head;
node = (WordNode*)malloc(sizeof(WordNode));
//初始化
node->word = word;
node->next = NULL;
head->link = node;
head->count += 1;
head->value = GetValue(node->word);
return true;
}
else
...{
tmp = GetValue(word);
while (pTmp!=NULL && tmp!=pTmp->value)
//每次插入都要检索,当文件很大时效率大打折扣
//可以加个索引,加快检索速度
...{
pre = pTmp;
pTmp = pTmp->next;
}
if (pTmp == NULL)
...{
//该特征值不存在,头结点链表末尾插入
head = (WordHeadNode*)malloc(sizeof(WordHeadNode));
//初始化
head->count = 0;
head->link = NULL;
head->next = NULL;
head->value = 0;
pre->next = head;
node = (WordNode*)malloc(sizeof(WordNode));
node->next = NULL;
node->word = word;
head->link = node;
head->count += 1;
head->value = GetValue(node->word);
return true;
}
//特征值存在就在,单词链表末尾插入,链接头count加1
node = (WordNode*)malloc(sizeof(WordNode));
node->next = NULL;
node->word = word;
npTmp = pTmp->link;
pTmp->count += 1;
while (npTmp->next != NULL)
npTmp = npTmp->next;
if (npTmp == NULL)
return false;
npTmp->next = node;
return true;
}
}
char* ReadFile(const char* fname)
...{
FILE *fp;
fp = fopen(fname,"r");
if (fp == NULL)
...{
perror("Open file failed! ");
exit(0);
}
fseek(fp,0L,SEEK_END);
long fsize = ftell(fp);
if (fsize==0L)
...{
puts("The file is empty! ");
exit(0);
}
char *file_buf = (char*)malloc((size_t)fsize+1);
rewind(fp);
int Ret = fread(file_buf,sizeof(char),fsize,fp);
if (Ret == 0)
...{
return NULL;
}
file_buf[fsize] = '
作者:Bring.Zhang 时间:2006.10
文件名:main.cpp
题目描述:
1,一个文件中存有空格分开的单词
现在要将这个文件读入到另外一个文件,保存格式如下:
live evil
search casher
........
就是含有相同字母的单词要放到一行。
用c实现,可以使用fopen,fread,fwrite等
接口:
bool TransferDictionary(char * OriginalFile,char * NewFile);
*******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <memory.h>
#include <string.h>
typedef struct word_tag//单词结点
...{
char* word;
struct word_tag* next;
// WordNode(){word=NULL; next=NULL;}
}WordNode;
typedef struct head_node_tag//链接的头结点
...{
WordNode* link;
struct head_node_tag* next;
int value;
int count;
// WordHeadNode(){link=NULL; next=NULL; value=0;count=0;}
}WordHeadNode;
WordHeadNode * start=NULL;
bool TransferDictionary(char* OriginalFile,char*NewFile);
char* ReadFile(const char* fname);
int GetValue(const char* word);
bool InsertNode(char* word);
void FreeSpace(WordHeadNode* start);
bool InsertNode(char* word)
...{
WordHeadNode *head,*pre,*pTmp;
WordNode * node,*npTmp;
int tmp;
pTmp = start;
if (start == NULL)
...{
head = (WordHeadNode*)malloc(sizeof(WordHeadNode));
//初始化
head->count = 0;
head->link = NULL;
head->next = NULL;
head->value = 0;
start = head;
node = (WordNode*)malloc(sizeof(WordNode));
//初始化
node->word = word;
node->next = NULL;
head->link = node;
head->count += 1;
head->value = GetValue(node->word);
return true;
}
else
...{
tmp = GetValue(word);
while (pTmp!=NULL && tmp!=pTmp->value)
//每次插入都要检索,当文件很大时效率大打折扣
//可以加个索引,加快检索速度
...{
pre = pTmp;
pTmp = pTmp->next;
}
if (pTmp == NULL)
...{
//该特征值不存在,头结点链表末尾插入
head = (WordHeadNode*)malloc(sizeof(WordHeadNode));
//初始化
head->count = 0;
head->link = NULL;
head->next = NULL;
head->value = 0;
pre->next = head;
node = (WordNode*)malloc(sizeof(WordNode));
node->next = NULL;
node->word = word;
head->link = node;
head->count += 1;
head->value = GetValue(node->word);
return true;
}
//特征值存在就在,单词链表末尾插入,链接头count加1
node = (WordNode*)malloc(sizeof(WordNode));
node->next = NULL;
node->word = word;
npTmp = pTmp->link;
pTmp->count += 1;
while (npTmp->next != NULL)
npTmp = npTmp->next;
if (npTmp == NULL)
return false;
npTmp->next = node;
return true;
}
}
char* ReadFile(const char* fname)
...{
FILE *fp;
fp = fopen(fname,"r");
if (fp == NULL)
...{
perror("Open file failed! ");
exit(0);
}
fseek(fp,0L,SEEK_END);
long fsize = ftell(fp);
if (fsize==0L)
...{
puts("The file is empty! ");
exit(0);
}
char *file_buf = (char*)malloc((size_t)fsize+1);
rewind(fp);
int Ret = fread(file_buf,sizeof(char),fsize,fp);
if (Ret == 0)
...{
return NULL;
}
file_buf[fsize] = '
- 一道微软MiniTest笔试题
- 一道微软笔试题
- 一道微软笔试题
- 一道网上找的微软笔试题
- 一道微软笔试题,算法才是王道
- 微软一道笔试题目
- 一道微软的Mini-Test笔试题 解决方法。
- 一道微软的Mini-Test笔试题(一)
- 一道微软的Mini-Test笔试题(二)
- 微软的一道C语言笔试题(转)
- 数位DP--由一道微软笔试题引起
- 微软2013暑期笔试一道题的探究
- 送上今年微软的一道笔试题
- 微软的一道笔试编程试题
- 一道微软推理题
- gameloft一道笔试题
- google笔试题一道
- 网易一道笔试题!
- 使用ObjectDataSource展现数据
- 从错误信息思考一个问题:.NET Framework 与 COM/COM+ 到底有多深入的关联呢?
- c/c++笔试面试题_1
- 终于下决定了
- c/c++笔试面试题_2
- 一道微软MiniTest笔试题
- c/c++笔试面试题_3
- 2006_10_18开发日志
- c/c++笔试面试题_4
- java中文件操作大全
- 算法笔试题_1
- 创建和销毁对象--考虑用静态工厂方法代替构造函数
- 获取当前页面的Url
- CMM欺骗了中国的软件业