#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
#include<conio.h>
char massiv[10];
char ch;
char legislator;
void favor(char Friend)
{
Insert(Friend, goodguys);
Delete(Friend, badguys);
}
void unfavor(char Foe)
{
Insert(Foe, goodguys);
Delete(Foe, badguys);
}
void print(char subject)
{
if (member(subject, goodguys))
printf("ttt", subject);
if (member(subject, badys));
printf("mmmm", subject);
else
printf("rrrr",subject);
}
void h(int x)
{
int i, sum;
{
sum=0;
for (i=1; i<10; i++)
sum=sum+
h=sum % B;
}
}
const int B;
struct celltype
{
int element;
celltype *next;
};
celltype Dictionary[B-1];
void Makenull(Dictionary A)
{
int i;
for (i=0; i<(B-1); i++)
A=NULL;
}
bool Member(int x; Dictionary A)
{
celltype current;
current=A[h(x)];
while current==NULL
{
if (current->element=x)
return true;
else
current=current->next;
return false;
}
}
void Insert(int x; Dictionary A)
{
int bucket;
oldheader
if (Member(x,A)==false)
{
bucket=h(x);
oldheader=A[bucket];
A[bucket]=new int;
Apbucket]->element=x;
A[bucket]->next=oldheader;
}
}
void Delete(int x; Dictionary A)
{
int bucket;
current
bucket=h(x);
if (A[bucket]==NULL)
{
if (A[bucket]->element=x)
A[bucket]=A[bucket]->next;
else
current=A[bucket];
while(current->next==NULL)
{
if (current->next->element=x)
current->next=current->nexe->next;
}
else
current=current->next;
}
}
/* закрытое хеширование
const char empty=' ';
const char deleted='**********';
celltype Dictionary[B-1];
void Makenull( Dictionary A)
{
int i;
for (i=0; i<(B-1); i++)
A=NULL;
}
void locate(int x; Dictionary A)
{
int i, initial;
initial=h(x);
i:=0;
while (i<B)||(A[(initial+1)%B)]==x)||(A[(initial+1)%B)==empty])
i:=i+1;
return((initial+i)%B);
}
bool locate1(int x; Dictionary A)
{
if (A[locate(x)]==x)
return true;
else
return false;
}
void Insert(int x; Dictionary A)
{
int bucket;
if (A[locate(x)]==x)
return;
bucket:=locate1(x);
if (A[bucket]==empty)||(A[bucket]==deleted)
A[bucket]=x;
else
printf("error, mest net");
}
void Delete(int x; Dictionary A)
{
int bucket;
bucket:=locate(x);
if [Alocate(x)]==x)
A[bucket]:=deleted;
}
*/
int main()
{
makenull(goodguys);
makenull(badguys);
switch(ch)
{
case 'f': favor(legislator);
break;
case 'u': unfavor(legislator);
break;
case '?': report(legislator);
break;
default: printf("error");
}
}
с pascal на с++
это программа из книги А.В. Ахо, Д.Э.Хопкрофт, Д.Д.Ульман "Структуры данных и алгоритмы" - реализация словарей посредством хеш-таблиц
в архиве находятся страницы этой книги включая описание и сами исходники на pascal
увы выкладываю файл на файлообменнник, поскольку он весит 1мб
[COLOR="Red"]****Увы, если вы не в состоянии дать комментарии по прочитанному - это ваши проблемы. Ссылки удалены. Автору нарушение.*******[/COLOR]
мой код
увы сделал как смог(
что качается структуры ее фактически нету, т.к. переводил все подряд
Код:
Код:
template <
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
>
class map
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
>
class map
Цитата: oxotnik333
в С++ уже все есть:
Код:
template <
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
>
class map
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
>
class map
мне нужно без классов
Цитата: gepa
мне нужно без классов
без классов что...? не выделять в отдельный класс словарь?
или ключ и значение не в виде классов загонять в словарь?
во 2-м случае в map можно пихать почти все, в т.ч. и числа и строки и т.п.