Реферат Курсовая Конспект
Типове завдання - раздел Образование, Тема: Прямий доступ та хешування. У Файлі Записані Прізвища Студентів. Для Вмісту Файлу Створити Хеш-Таблицю На...
|
У файлі записані прізвища студентів. Для вмісту файлу створити хеш-таблицю на 10 елементів із розподіленими ланцюжками переповнення (у списки записувати прізвища – синоніми). Функція хешування визначається як:
Адреса = ∑(Код)i mod 10
де: ∑(Код)i - сума кодів усіх літер прізвища,
mod - залишок від цілочисельного ділення.
Перевірити працездатність хеш-таблиць. Результати видати на екран.
ВИХІДНІ МОДУЛІ.
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="