[ create a new paste ] login | about

Link: http://codepad.org/9flHpqrD    [ raw code | output | fork ]

C++, pasted on Nov 17:
#include <iostream>
#include <cctype>

struct tnode {
	char*  ptr;
	tnode* next;
};
void tnode_init(tnode* arr[], int num);
void tnode_token(tnode* arr[], int num, char* s);
void tnode_free(tnode* arr[], int num);

int main(void){
	const int num = 26;
	tnode* arr[num];

	tnode_init(arr, num);

	char s[] = "wood toy ball doll apple";
	tnode_token(arr, num, s);

	for(int i = 0; i < num; ++i){
		for(const tnode* p = arr[i]; p != NULL; p = p->next)
			std::cout << p->ptr << std::endl;
	}
	tnode_free(arr, num);
	return 0;
}

void tnode_init(tnode* arr[], int num){
	for(int i = 0; i < num; ++i)
		arr[i] = NULL;
}

//заполнение таблицы
void tnode_token(tnode* arr[], int num, char* s){
	int   i;
	char* p;
	while(*s){
		while(*s && !isalpha(*s))
			++s;
		for(p = s; isalpha(*p); ++p);

		if((p - s) > 0){
			if(*p)
				*p++ = '\0';

			if(islower(*s) && ((i = *s - 'a') < num)){
				tnode* ptr = new (std::nothrow) tnode();
				if(ptr == NULL)
					break;

				ptr->ptr  = s;
				ptr->next = arr[i];
				arr[i]    = ptr;

				*s = toupper(*s);
			}
		}
		s = p;
	}
}

//удаление
void tnode_free(tnode* arr[], int num){
	tnode* t;
	for(int i = 0; i < num; ++i){
		while(arr[i] != NULL){
			t      = arr[i];
			arr[i] = arr[i]->next;
			delete t;
		}
	}
}


Output:
1
2
3
4
5
Apple
Ball
Doll
Toy
Wood


Create a new paste based on this one


Comments: