Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
bruce_
1 / 1 / 1
Регистрация: 30.01.2013
Сообщений: 67
1

Вывод массива списков

26.04.2015, 12:11. Просмотров 214. Ответов 3
Метки нет (Все метки)

Здравствуйте. Я создал массив списков, но не могу вывести. подскажите как
C++
1
2
3
4
5
6
7
8
9
struct list{
    list(){empty=true; synonym=false; index=0;}
    char *key; 
    int index; 
    int value; 
    bool empty;
    bool synonym; 
    list *new_list;
};
C++
1
    list hashtable1[table_size];
C++
1
2
3
4
5
class HashTable
{
private: 
    list *head;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            if (hashtable1[index].empty == true)
            {
                hashtable1[index].empty = false;
                hashtable1[index].key = word_key;
                hashtable1[index].value=value;
                hashtable1[index].index = index;
            }
            else
            {
                hashtable1[index].synonym = true;
                list* NewList = new list;
                NewList->index = index;
                NewList->empty = false;
                NewList->key = word_key;
                NewList->value = value;
                NewList->synonym = false;
                NewList->new_list = head;
                head = NewList;
            }
Я надумал только такой вариант вывода, но он не работает (при 1ом разе вайла, при выводе, вылетает ошибка, что new_list пуст, хотя это невозможно, раз он заходит туда)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void HashTable::show_list(){
    list* output;
    for (int i = 0; i < table_size; i++){
        if (hashtable1[i].synonym == true && hashtable1[i].empty == false)
        { 
            cout <<"\n"<<i<< ") key -> " << hashtable1[i].key <<" ";
            output = &hashtable1[i];
            while (output->new_list != NULL){            
                output = output->new_list;
                cout<<i << ") key-> " <<    output->key<< " ";
            }
        }
        else 
            if (hashtable1[i].synonym == false && hashtable1[i].empty == false)cout<<i << ") key -> " << hashtable1[i].key;}}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2015, 12:11
Ответы с готовыми решениями:

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод)
Как сделать чтобы список студентов выводился на экран в конце?...

Открытые функции класса: ввод массива, вывод массива, определение длины вектора
Данные класса: массив N(10). Открытые функции класса: ввод массива, вывод...

Вывод определенного элемента массива из массива символов
Имеется символьный массив char, нужно вывести на экран произвольный элемент...

Ввод и вывод массива целых чисел Вычислить сумму модулей элементов массива,располроженных после первого отрицательного
Очень срочно,помогите пожалуйста,чем быстрее - тем лучше=) Ввод и вывод...

Ввод и вывод массива целых чисел Вычислить сумму модулей элементов массива,располроженных после первого отрицательного
Очень срочно,помогите пожалуйста,чем быстрее - тем лучше=) Ввод и вывод...

3
nmcf
6506 / 5739 / 2613
Регистрация: 14.04.2014
Сообщений: 24,479
26.04.2015, 17:41 2
Трудно что-то определённое сказать, потому что просто не ясно, какую структуру данных ты хочешь получить.
Если есть несколько (table_size) списков, то в массиве должны храниться указатели на их начальные элементы, т. е.
C++
1
list *hashtable1[table_size];
Не понятно, что такое head у класса HashTable? Это начальный элемент какого из списков? Как вообще класс с этим массивом увязан?
0
bruce_
1 / 1 / 1
Регистрация: 30.01.2013
Сообщений: 67
26.04.2015, 17:59  [ТС] 3
nmcf,
я подумал, что list hashtable1[table_size]; - это массив с типом данных list. записываю первые элементы, а в дальнейшем head привяжет. заблуждался, похоже...
0
nmcf
6506 / 5739 / 2613
Регистрация: 14.04.2014
Сообщений: 24,479
26.04.2015, 18:03 4
Ну можно так сделать, только как тогда показать, что список пуст? С указателями первый элемент будет = NULL.
В общем для унификации все элементы должны быть через указатели.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2015, 18:03

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5;...

Вывод массива
При выводе массива через цикл выводится лишь первый член массива, остальные не...

Вывод массива!
#include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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