extern int strlen(const char*); extern int strcmp(const char*, const char*); extern int strcpy(const char*, const char*); name* look(char* p, int ins =0) { int ii = 0; // хэширование char* pp = p; while (*pp) ii = ii<<1 ^ *pp++; if (ii < 0) ii="-ii;" ii %="TBLSZ;" for (name* n="table[ii];" n; n="n-">next) // поиск if (strcmp(p,n->string) == 0) return n; if (ins == 0) error("имя не найдено"); name* nn = new name; // вставка nn->string = new char[strlen(p)+1]; strcpy(nn->string,p); nn->value = 1; nn->next = table[ii]; table[ii] = nn; return nn; }