Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rgz_asd.docx
Скачиваний:
12
Добавлен:
11.03.2015
Размер:
54.12 Кб
Скачать

TableList.C

#include<stdio.h>

#include “list.h”

#include “TableList.h”

voidInitTable(Table *T, unsigned SizeBuf, unsigned SizeEl)

{ unsignedi;

T->Buf = (List*)calloc(SizeBuf, sizeof(List));

T->n = 0;

T->SizeBuf = SizeBuf;

T->SizeEl = SizeEl;

for(I = 0; i<SizeBuf; i++) {

InitList(&(T->Buf[i]),SizeEl);

}

TableError = TableOk;

}

intEmptyTable(Table *T) {

return T->n == 0;

}

intSearch_List(List *L, BaseType E, func f) {

_Element temp;

BeginPtr(L);

while (!EndList(L)) {

ReadList(L, &temp);

if (f(&temp, E) == 0) {

return 1;

}

MovePtr(L);

}

return 0;

}

intPutTable(Table *T, BaseType E, func f) {

unsigned index = (unsigned)(((((_Element*)E)->key)*C1 + C2)%T->SizeBuf);

if (Search_List(&(T->Buf[index]), E, f)==1) {

return 0;

}

PutList(&(T->Buf[index]), E);

if (ListError) {

TableError = TableNotMem;

return 0;

}

return 1;

}

intGetTable(Table *T, BaseType E, T_Key Key, func f) {

unsigned index = (unsigned)((Key*C1 + C2) % T->SizeBuf);

if (Search_List(&(T->Buf[index]), E, f)==0) {

return 0;

}

GetList(&(T->Buf[index]), E);

return 1;

}

intReadTable(Table *T, BaseType E, T_Key Key, func f) {

unsigned index = (unsigned)((Key*C1 + C2) % T->SizeBuf);

if (Search_List(&(T->Buf[index]), E, f)==0) {

return 0;

}

ReadList(&(T->Buf[index]), E);

return 1;

}

intWriteTable(Table *T, BaseType E, T_Key Key, func f) {

_Element temp;

if (ReadTable(T, &temp, Key, f)) {

GetTable(T, &temp, Key, f);

PutTable(T, E, f);

return 1;

}

else {

return 0;

}

}

voidDoneTable(Table *T)

{ unsignedi;

for ( I = 0; i< T->SizeBuf; i++) {

DoneList(&(T->Buf[i]));

}

free(T->Buf);

free(T);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]