Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Sereb
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 3
1

Связный список - добавление елемента в конец , деструктор

16.10.2012, 08:35. Просмотров 1443. Ответов 2
Метки нет (Все метки)

Доброе утро. Пишу хеш-таблицу в билдере по условиям лабки.
Берем слова из текстового файла , считаем их идентификационный код , и добавляем в таблицу.
Саму таблицу я вижу в виде динамического массива односвязных списков.
Застопорился при написании класса односвязных списков , а именно , добавляется только первый елемент в список , а дальше где-то ошибка. Выкладываю код :
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
struct HashWord { string name, path ;int value; HashWord *next; };
class HashList
{
private:
HashWord *first, *last;
public:
HashList();
~HashList();
void AddToList(string name,string path,int value);
};
HashList::HashList()
{ first=last=NULL;}
HashList::~HashList()
{ first=last=NULL;}
void HashList::AddToList(string name,string path,int value)
{HashWord *temp = new HashWord;
if (first==NULL)
first=temp;
else
last->next=temp;
temp->next=NULL;
temp->name=name;
temp->path=path;
temp->value=value;
}
И подскажите , пожалуйста , как лучше реализовать деструктор здесь . потому что мой 100% неправильно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 08:35
Ответы с готовыми решениями:

Двусвязный список: создание, добавление элементов в конец списка, поиск по значению информационного поля макси
Народ помогите пж. 14) Двусвязный список: создание, добавление элементов в конец списка, поиск по...

Добавление елемента в xml список
Прошу помощи с добавлением элементов в xml список, есть xml список формата <?xml version="1.0"...

Связный список (Используя структуру описания даты, построить связный список студентов, сформированный в алфавитном порядке)
Здраствуйте! Помогите пожалуйста найти косяк. Выводится только первая строчка из списка студентов....

Связный список. Необходимо создать новый связный список только из положительных элементов
Задача: Прочитать из файла связный список. Потом из этого списка создать еще один, в котором будут...

Инициализация, добавление и удаление элементов в СТЕКЕ через связный список
День добрый, нужна помощь со стеками. Передо мною стоит задача: 1) Инициализировать СТЕК через...

2
DefineTrueFalse
870 / 447 / 35
Регистрация: 25.10.2011
Сообщений: 910
16.10.2012, 13:11 2
Используйте подсветку синтаксиса - это повышает шанс, что Вам ответят.
Цитата Сообщение от Sereb Посмотреть сообщение
И подскажите , пожалуйста , как лучше реализовать деструктор здесь . потому что мой 100% неправильно.
Цитата Сообщение от Sereb Посмотреть сообщение
C++
1
2
3
4
HashList::~HashList()
{
first=last=NULL;
}
Что и зачем здесь происходит - не понятно. Вам нужно описать деструктор, который освободит память всех элементов в списке. Основный смысл хранения первого элемента как раз и заключается в том, что определить, откуда прыгать..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HastList::~HastList()
{
    HashWorld * iWord = First;
    // iWord - переменная для прохода по элементам списка
    while (iWord != NULL)
    // до тех пор, пока существуют элементы
    {
        HashWord * temp = iWord;
        // временная переменная, указывающая, что нужно удалить
        iWord = iWord->Next;
        // переходим к следующему элементу из списка
        delete temp;
        // освобождение памяти
    }
}
Цитата Сообщение от Sereb Посмотреть сообщение
Застопорился при написании класса односвязных списков , а именно , добавляется только первый елемент в список , а дальше где-то ошибка.
Во-первых. Чему равна переменная, отвечающая за последний элемент, после добавления первого? В ситуации, когда "добавляется" первый элемент, он же должен являться последним.
C++
1
2
first = temp;
last = first; // last = temp
Во-вторых. Вы добавли второй элемент, разве он теперь не является последним?
C++
1
2
3
last->next = temp;
// ...
last = temp;
0
Sereb
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 3
22.10.2012, 21:07  [ТС] 3
Спасибо , уже решил проблему
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 21:07

Односвязный список: добавление элементов в начало и в конец
добавление элементов в начало функции и в конце с помошью функции прошу помоч. program Project1;...

Односвязный список: добавление элемента в конец списка
Здравствуйте, учу списки, стояла задача - добавить в готовый список элементы в...

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


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

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

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