/***********************Splay.cpp***********************/
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
#include <cstdlib> //exit(0)
#include "genSplay.h"
using namespace std;
//用作计数对象的类
class Word
{
private:
char *word;
int freq;
friend class WordSplay;
//friend ostream & operator<<(ostream &out, const Word &wd);
public:
Word(){
freq = 1;
}
int operator==(const Word &ir) const{
return strcmp(word, ir.word) == 0;
}
int operator<(const Word &ir) const{
return strcmp(word, ir.word) < 0;
}
};
class WordSplay : public SplayTree<Word>
{
private:
int differentWords, wordCnt;
void visit(SplayingNode<Word> *);
public:
WordSplay(){
differentWords = wordCnt = 0;
}
void run(ifstream &, char *);
};
void WordSplay::visit(SplayingNode<Word> *p)
{
differentWords++;
wordCnt += p->info.freq;
}
void WordSplay::run(ifstream &fin, char *filename)
{
char ch = ' ', i;
char s[100];
Word rec;
while(!fin.eof()){
while(1){
if(!fin.eof() && !isalpha(ch))
fin.get(ch);
else
break;
}
if(fin.eof())
break;
for(i = 0; !fin.eof() && isalpha(ch); i++){
s[i] = toupper(ch);
fin.get(ch);
}
s[i] = '