Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // Объявить и ввести массив структур из n элементов. Создать хештаблицу из М элементов. Осуществить поиск элемента по ключу в хеш-таблице.
- //Вывести на экран исходный массив, хеш-таблицу и все поля найденной структуры. Задание выбрать в соответствии с номером варианта в табл. V.
- // key time
- //на основе связных списков
- //М=10
- struct train
- {
- char area[30];
- int number;
- double time;
- };
- struct Task
- {
- int inf;
- Task* p;
- };
- //Task** Create(int M)
- //{
- // Task** H = new Task * [M];
- // for (int i = 0; i < M; i++)
- // {
- // H[i] = NULL;
- // }
- //}
- //void Add( train t[],int inf, int m, Task** H)
- //{
- // int i = t[inf].time % m;
- //
- // Task* spt = new Task;
- // spt->inf = inf;
- // int i = inf % m;
- // if (H[i] == NULL)
- // {
- // H[i] = spt;
- // spt->p = NULL;
- // }
- // else
- // {
- // spt->p = H[i];
- // H[i] = spt;
- // }
- //}
- Task* Search(int inf, int m, Task** H)
- {
- int i = abs(inf % m);
- Task* spt = H[i];
- while (spt != NULL)
- {
- if (spt->inf == inf) return spt;
- spt = spt->p;
- }
- return NULL;
- }
- void Delete(int m, Task** H)
- {
- Task* spt, * sp;
- for (int i = 0; i < m; i++)
- {
- cout << "H[" << i << "]= ";
- sp = H[i];
- while (sp != NULL)
- {
- cout << sp->inf << " ";
- spt = sp;
- sp = sp->p;
- delete spt;
- }
- cout << endl;
- }
- delete[]H;
- }
- void View(train*t, int M)
- {
- for (int i = 0; i < M; i++)
- {
- cout << "Место прибывания:" << t[i].area << "\nНомер рейса" << t[i].number << "\nВремя отправления" << t[i].time << endl;
- }
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- /*H = Create(M);
- for (int i = 0; i <M; i++)
- {
- Add(mas[i], M, H);
- }
- int ss;
- Task* p;
- cin >> ss;
- while (ss != -1)
- {
- p = Search(ss, M, H);
- if (p == NULL)
- {
- cout << "Net elementa" << endl;
- }
- else cout << p->inf << endl;
- cin >> ss;
- }
- Delete(M, H);*/
- train* t = nullptr;
- train** hashTable = nullptr;
- int choice;
- int M, size;
- double time1;
- while (true)
- {
- cout << "1.Добавить элементы\n2.Найти элемент\n3.Просмотреть введеннные данные\n4. Просмотреть хэш таблицу\n5.Очистить\n6.Выйти";
- cin >> choice;
- switch (choice)
- {
- case 1:
- cout << "Введите размер хэш таблицы (стандарт 10)" << endl;
- cin >> M;
- hashTable = new train * [M];
- cout << "Введите количество элементов для ввода" << endl;
- cin >> size;
- while (size > M)
- {
- cout << "Количество элементов больше размера хэш таблицы" << endl;
- cin >> size;
- }
- for (int i = 0; i < size; i++)
- {
- cout << "Введите место прибывания: ";
- cin.ignore();
- cin.getline(t[i].area, 30);
- cout << "Введите номер рейса: ";
- cin >> t[i].number;
- cout << "Введите время отправления: ";
- cin >> t[i].time;
- }
- break;
- case 2:
- cout << "Введите время отправления" << endl;
- cin >> time1;
- break;
- case 3:
- break;
- case 4:
- if (hashTable = NULL)
- {
- cout << "Создайте хэш таблицу" << endl;
- return 0;
- }
- View(t, M);
- break;
- case 5:
- break;
- case 6:
- exit(0);
- break;
- default:
- cout << "Повторите еще раз" << endl;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement