一个好网站建设,网站托管 域名,网站模板可以自己做吗,关键词优化助手这道练习题训练了#xff1a; 1.结构体数组 2.二分查找 3.指针操作 ---- 都不难。但非常基础#xff0c;我认为非常好#xff0c;做完了记到博客上来#xff0c;题目见kR#xff0c;实现例如以下#xff1a; /** Practice of struct array. KR 6-1* author : w… 这道练习题训练了 1.结构体数组 2.二分查找 3.指针操作 ---- 都不难。但非常基础我认为非常好做完了记到博客上来题目见kR实现例如以下 /** Practice of struct array. KR 6-1* author : wusuopubupt* date : 2014-09-18*/#include stdio.h
#include ctype.h
#include string.h#define MAXWORD 100typedef struct key_{char *word;int count;
} key;key key_tab[] {{auto, 0},{break, 0},{case, 0},{char, 0},{const, 0},{continue, 0},{default, 0},{for, 0},{int, 0},{void, 0},{while, 0}
};int getword(char *word, int n);
int binary_search(key key_tab[], char *word, int n);
key *binary_search2(key *key_tab, char *word, int n);int getword(char *word, int n) {int c;char *w word;while(isspace(c getchar())) {;}if(c ! EOF) {*w c;}if(!isalpha(c)) {*w \0;return c;}while(n 0) {c getchar();if(isalnum(c)) {*w c;}else {break;}n--;}*w \0;return w[0];
}int binary_search(key key_tab[], char *word, int n) {int low 0;int high n-1;int mid;int result;while(low high) {mid (lowhigh) / 2;result strcmp(word, key_tab[mid].word);if(result 0) {high mid-1;}else if(result 0) {low mid 1;}else {return mid;}}return -1;
}/* implemented with pointer */
key *binary_search2(key *key_tab, char *word, int n) {key *low key_tab;key *high key_tab n-1;key *mid;int result;while(low high) {//mid (lowhigh) / 2; /* error: can not use pointerpointer d*/mid low (high-low) / 2; /* pointer num */result strcmp(word, mid-word);if(result 0) {high mid-1;}else if(result 0) {low mid 1;}else {return mid;}}return NULL;
}int main1() {int i;int n_keys sizeof(key_tab) / sizeof(key_tab[0]);char word[MAXWORD];while(getword(word, MAXWORD) ! EOF) {if(isalpha(word[0])) {if((i binary_search(key_tab, word, n_keys)) 0) {key_tab[i].count;}}}i 0;while(i n_keys) {printf(%s : %d\n, key_tab[i].word, key_tab[i].count);i;}return 0;
}int main() {int n_keys sizeof(key_tab) / sizeof(key_tab[0]);char word[MAXWORD];key *k NULL;while(getword(word, MAXWORD) ! EOF) {if(isalpha(word[0])) {if((k binary_search2(key_tab, word, n_keys)) ! NULL) {k-count;}}}int i 0;while(i n_keys) {printf(%s : %d\n, key_tab[i].word, key_tab[i].count);i;}return 0;
}github:https://github.com/wusuopubupt/LearningC/blob/master/K%26R/chp6/keyword_count.c