ВИХІДНІ МОДУЛІ.
1). Файл із прізвищами
Pihtin .
Gavruk
Kovalenko
Popa
Semenuk
Kosenko
Yankovoy
Petrov
Ponomarenko
Panteleymonov
Sidorov
Lyashenko
Konashevich
Storogenko
Storogenko
Panin
Maslov
Ivanov
Ermolenko
Kolugniy
2). ФАЙЛ ІЗ ОПИСОМ ФУНКЦІЙ.
#define RAZM 10 // Розмір хеш-таблиці
struct Stud
{ char name[20]; //Прізвище студента
Stud *next; // Покажчик на наступне прізвище
Stud *prev; // Покажчик на попереднє прізвище
Stud *beg; // Покажчик на початок списку
Stud *curr; //Покажчик на поточне прізвище
};
Stud *st;
Stud *p[RAZM]; //Хеш-таблиця
int Build(int position,char *str); // Створення елемента списку для даного прізвища str
void Del(); // Видалення прізвища зі списку
void First(); // Ініціалізація хеш-таблиці
void Insert(); // Вставки прізвища в хеш-таблицю
int Kesh(char *str); // Розподіл прізвищ по списках
void Show(); // Видача списків на екран
void Search(); // Пошук прізвища в списку
void Death(); // Знищення списків
void Menu(); // Видача меню
void Update_File(); // Перезапис вхідного файлу відповідно до змін
3). ГОЛОВНИЙ МОДУЛЬ.
/* Відкривається файл; для кожного прізвища обчислюється позиція в хешованому списку, записується в список, видається результат на екран і перехід до меню. */
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
#include "func.h"
#include "do.cpp"
void main(void)
{ FILE *f;
char *string="\0";
int pos=0;
clrscr();
First();
if((f=fopen("kesh.txt","rt"))==NULL)
{ cout<<"Error reading input file\n";
getch();
exit(1);
}
while(!feof(f))
{ fgets(string,20,f);
if(string[strlen(string)-1]=='\n')
string[strlen(string)-1]='\0';
pos=Kesh(string);
Build(pos,string);
}
fclose(f);
Show();
Menu();
Death();
getch();
}
4). МОДУЛЬ, що містить функції для реалізації усіх вищевказаних дій.
int Kesh(char *str)
{ int i,kesh=0,size=0;
for(i=0;i<(strlen(str)-2);i++)
size+=(int)str[i]; //підсумовуємо всі коди рядка
kesh=size%RAZM; //Значення хэш-функции
return kesh;
}
void First()
{ for(int i=0;i<RAZM;i++)
p[i]=NULL; // ініціалізація масиву покажчиків на списки
}
int Build(int position, char *str)
{ Stud *pt,*nw,*nxt;
int kol=0;
pt=new Stud;
if(!pt)
{ cout<<"Error"<<endl;
getch();
exit(1);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.