![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Neonig |
![]()
Сообщение
#1
|
|||
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите разобраться с заданием пожалуйста.
Вот по этому адресу (адрес указан в приложенном файле) лежит задание для нас. Там правда сказано на С++ без ООП, но преподаватель сказал, что на НАМ нужно на чистом Си. В файле на сайте все написанное и приведены три задания: двусвязный линейный список, ассоциативный массив и динамический массив. В Листинге который я выложу дальше я по идеи реализовал первое задание - линейный список - очень прошу специалистов посмотреть и высказать замечания, где может не правильно, где недодумано, где ещё чего. Вторая просьба - это пояснить, как основываясь на интерфейсе списков сделать динамический массив (это всё в здании написано просто коротко напоминаю) и что из себя таки представляет этот ассоциативный массив в примитивной реализации... не прошу написать, прошу объяснить как на основе сделанного прийти ко всему остальному. С уважением
Сообщение отредактировано: klem4 - 23.09.2007 8:06 Прикрепленные файлы ![]() |
|||
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
У тебя в коде есть утечки памяти, или мне кажется? Вот это, например, что такое:
int cont_size(void* cont) ? Второе... Вот тут: void cont_add(void* cont, void* data) Да и вообще, я бы посмотрел в сторону повторного использования функций... А то ты каждый раз делаешь "все внутри себя", а ведь если чуть-чуть подкорректировать, например, функцию cont_size, то можно будет значительно уменьшить размер кода за счет того, что те же самые действия не будут выполняться, например, в cont_add/cont_get/cont_replace, а будет вызываться cont_size... |
Neonig |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
[quote name='volvo' date='23.09.2007 10:42' post='109904']
У тебя в коде есть утечки памяти, или мне кажется? Вот это, например, что такое: int cont_size(void* cont) ? Второе... Вот тут: void cont_add(void* cont, void* data) Поясни пожалуйста по утечкам, я сделал как бы промежуточную переменную для структуры которую хочу пропихнуть в контейнер и только потом присваиваю ей указатель на память где хранится первый элемент контейнера приведенный к типу моей структуры (её вид ты наверное уже понял, поля некст, прев, дата и каунт)... я думал, что если объявил такую переменную, то прежде чем присвоить её ссылку на первый элемент должен выделить память - этого делать НЕ надо? не объяснишь почему? я думал всегда нужно выделять память... А вот на счет schet++ я это делаю чтобы новая добавленная в конец структура получила свой порядковый номер, т.к. потом нужна будет функция возвращающая число структур в контейнере и я предполагал брать это число из последней структуры в контейнере... проще говоря я не понял комментария - число не сохранится в структуре или что? Если да, то получается, что когда я добавляю элемент и заношу в него данные, то и они не сохраняются (такая функция тоже есть выше в моем исходнике). Если не трудно скажи, а в какой момент нужно память освобождать, даже если я пойму почему выделение памяти лишнее и уберу его, то все равно иногда оно встречается по необходимости - где её освободить? Ну и наконец, тут чтобы более не нарушить правил скажу так... вот есть ещё два задания. Худо бедно, но это (линейный двусвязанный список) сделано, но требует серьёзной доработки (потому я все выспрашиваю, чтобы понять), а вот другие два задания мне не понятны просто - Динамический массив на основе этого списка (т.е. те же функции что и для списка, но теперь релизнуть на них надо динамический массив) - что это, что теперь делают функции, в чем особенность - не могу понять и всё... и наконец Ассоциативный массив, о чем он я примерно понял, интерфейс этого массива заключается в добавлении поля кей в каждую функцию, но сути я не понял, что за структура, то должно подаваться -сути не понимаю... |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 15:15 |