Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
#1

Хешированный список - C++

25.05.2012, 16:06. Просмотров 699. Ответов 10
Метки нет (Все метки)

Все привет!
Как реализовать в основной памяти хешированный список?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2012, 16:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хешированный список (C++):

Создать список L3 из элементов, входящих и в список L1 и в список L2 - C++
создать список л3 из элементов входящих и в список л1 и в список л2

3 класса: список, стек(как список), очередь(как список) - C++
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление, удаление. Использовать при обращении указатель...

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include<iostream> #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> using namespace std; struct...

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список - C++
Подскажите пожалуйста как мне создать список из моих результатов(с массивами) а потом просмотреть весь список, вот код который имеется ...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
25.05.2012, 16:21 #2
Например вот-так:
C++
1
2
3
4
5
typedef struct Hash
{
      int nKey;
      char* value;
}HASH, *PHASH;
C++
1
HASH* pHash = new HASH[100];
Обрабатывать хеш-массив при помощи хеш-функций поиска, сортировки по заданому ключу nKey
0
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
25.05.2012, 16:34  [ТС] #3
Как к примеру, реализовав хешированный список пассажиров, при запросе имени выводить полную информацию обо всех списках и очередях, в которых он находится? Как систему эту организовать, до меня не доходит почему то?
0
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
25.05.2012, 17:02 #4
Например вот-так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
typedef struct Queue
{
     char* name;
     int id;
} QUEUE, PQUEUE;
 
typedef struct Passanger
{
     char* name;
     QUEUE* pQueue;
} PASSINFO, *PPASSINFO;
 
while (pHash != NULL)
{
    if (!strcmp(pHash->name,name))
    {
        printf("%s\n",pHash->name);
        for (int k = 0; pHash->pQueue[k].id != 0; k++)
             printf("%s %s\n",pHash->pQueue[k].id,
                  pHash->pQueue[k].name);
        printf("\n");
    }        
 
    pHash++;
}
1
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
26.05.2012, 16:12  [ТС] #5
У тебя есть время написать что нужно добавить в прогу чтоб она работала? Я не понимаю как этим пользоваться
0
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 22:15 #6
Демонстрационная программа сначала заполняет хеш фамилиями из
файла и случайн. знач. индент. очередей, далее производит поиск по
хешу по заданной фамилии:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
 
#include <iostream>
#include <fstream>
 
typedef struct Queue
{
     char* name;
     int id;
} QUEUE, PQUEUE;
 
typedef struct Passanger
{
     char* name;
     QUEUE* pQueue;
} PASSINFO, *pHash;
 
using namespace std;
 
#define _SIZE 100
 
int main()
{
    static char name[256] = "\0";
    printf("Enter passanger name: "); gets(name);
 
    const char* filename = "input.txt";
    ifstream ifs(filename, ifstream::in);
 
    PASSINFO* pHash = new PASSINFO[_SIZE];
    memset((void*)pHash, 0x00, _SIZE * sizeof(PASSINFO));
 
    char* line = new char[80]; int i = 0;
    while ((ifs.peek() >= 0) && (ifs.getline(line,80)))
    {
        pHash[i].name = new char[80];
        strcpy_s(pHash[i++].name, 80, line);
    }
 
    for (int i = 0; pHash[i].name != NULL; i++)
    {
        int count = rand() % 10 + 1;
        pHash[i].pQueue = new QUEUE[count];
        memset((void*)pHash[i].pQueue, 
            0x00, count * sizeof(QUEUE));
 
        for (int k = 0; k < count; k++)
        {
            pHash[i].pQueue[k].id = rand() % 999 + 1;
            pHash[i].pQueue[k].name = new char[256];
            sprintf(pHash[i].pQueue[k].name,"Queue%d_%d",i,k);
        }
    }
 
    while (pHash->name != NULL)
    {
         if (!strcmp(pHash->name,name))
         {
             printf("%s\n",pHash->name);
             for (int k = 0; pHash->pQueue[k].id > 0; k++)
                  printf("%d %s\n",pHash->pQueue[k].id,
                          pHash->pQueue[k].name);
             printf("\n");
         }        
 
         pHash++;
    }
 
    return 0;
}
Input.txt:
Ivanov
Petrov
Safonov
Kirilov
Stepanov
Rybakov
Pavlov
1
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 23:08 #7
Высылаю .exe-файл и input.txt:
1
Вложения
Тип файла: zip Test2.zip (20.9 Кб, 8 просмотров)
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 23:20 #8
Высылаю .exe-файл в архиве.
2
Вложения
Тип файла: zip Test2.zip (20.9 Кб, 5 просмотров)
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 23:28 #9
Высылаю последнюю версию .exe-файла и input.txt:
0
Вложения
Тип файла: zip Test2.zip (20.9 Кб, 7 просмотров)
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 23:44 #10
xbifx, постарайтесь разобраться в написанной программе, и скомпилировать ее.
Код был написан и отлажен в VC++ 2010.
2
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
26.05.2012, 23:50 #11
Вот, в архиве проект для VC++ 2010:
1
Вложения
Тип файла: zip proj.zip (3.13 Мб, 9 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 23:50
Привет! Вот еще темы с ответами:

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. - C++
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

Напечатать пронумерованный список список первых 10 наиболее популярных газет - C++
опросили 200 подписчиков. Каждый из них назвал 3 любимые газеты. Напечатать пронумерованный список список первых 10 наиболее популярных...

Необходимо создать список, элемент которого может быть список - C++
Всем доброго времени суток! Стоит следующая задача: необходимо создать список, элемент которого может быть список (да да, звучит...

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.05.2012, 23:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru