⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wf1.c

📁 c语言编译器
💻 C
字号:
/* wf1 - print word frequencies; uses structures */struct node {	int count;		/* frequency count */	struct node *left;	/* left subtree */	struct node *right;	/* right subtree */	char *word;		/* word itself */} words[2000];int next;		/* index of next free entry in words */struct node *lookup();main() {	struct node *root;	char word[20];	root = 0;	next = 0;	while (getword(word))		lookup(word, &root)->count++;	tprint(root);	return 0;}/* err - print error message s and die	*/err(s) char *s; {	printf("? %s\n", s);	exit(1);}/* getword - get next input word into buf, return 0 on EOF */int getword(buf) char *buf; {	char *s;	int c;	while ((c = getchar()) != -1 && isletter(c) == 0)		;	for (s = buf; c = isletter(c); c = getchar())		*s++ = c;	*s = 0;	if (s > buf)		return (1);	return (0);}/* isletter - return folded version of c if it is a letter, 0 otherwise */int isletter(c) {	if (c >= 'A' && c <= 'Z')		c += 'a' - 'A';	if (c >= 'a' && c <= 'z')		return (c);	return (0);}/* lookup - lookup word in tree; install if necessary */struct node *lookup(word, p) char *word; struct node **p; {	int cond;	char *malloc();	if (*p) {		cond = strcmp(word, (*p)->word);		if (cond < 0)			return lookup(word, &(*p)->left);		else if (cond > 0)			return lookup(word, &(*p)->right);		else			return *p;	}	if (next >= 2000)		err("out of node storage");	words[next].count = 0;	words[next].left = words[next].right = 0;	words[next].word = malloc(strlen(word) + 1);	if (words[next].word == 0)		err("out of word storage");	strcpy(words[next].word, word);	return *p = &words[next++];}/* tprint - print tree */tprint(tree) struct node *tree; {	if (tree) {		tprint(tree->left);		printf("%d\t%s\n", tree->count, tree->word);		tprint(tree->right);	}}/* strcmp - compare s1 and s2, return <0, 0, or >0 */int strcmp(s1, s2) char *s1, *s2; {	while (*s1 == *s2) {		if (*s1++ == 0)			return 0;		++s2;	}	if (*s1 == 0)		return -1;	else if (*s2 == 0)		return 1;	return *s1 - *s2;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -