IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Контейнеры в Си, .
Neonig
сообщение 22.09.2007 17:43
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  -1  +


Помогите разобраться с заданием пожалуйста.
Вот по этому адресу (адрес указан в приложенном файле) лежит задание для нас. Там правда сказано на С++ без ООП, но преподаватель сказал, что на НАМ нужно на чистом Си. В файле на сайте все написанное и приведены три задания: двусвязный линейный список, ассоциативный массив и динамический массив. В Листинге который я выложу дальше я по идеи реализовал первое задание - линейный список - очень прошу специалистов посмотреть и высказать замечания, где может не правильно, где недодумано, где ещё чего. Вторая просьба - это пояснить, как основываясь на интерфейсе списков сделать динамический массив (это всё в здании написано просто коротко напоминаю) и что из себя таки представляет этот ассоциативный массив в примитивной реализации... не прошу написать, прошу объяснить как на основе сделанного прийти ко всему остальному.
С уважением

 ! 
Второй раз говорю, прочитай правила форума



Сообщение отредактировано: klem4 - 23.09.2007 8:06


Прикрепленные файлы
Прикрепленный файл  code.doc ( 35.5 килобайт ) Кол-во скачиваний: 169
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 30.09.2007 0:16
Сообщение #2


Гость






"Ну-с, приступим..." (С) "Напарник"

Если ты вот тут:
int main()
for (count_two = 0; count_two <= 10; count_two +=1)
{
cont_add(cont, &count[count_two]);
printf("%d", ((AL*)cont)->count); // <--- у меня действительно компилируется только так...
}

хотел распечатывать текущее число элементов в контейнере, то ты ошибся - здесь будет печататься count только для первого элемента контейнера, а это - всегда 0...

Это первое...
Второе... Я тебе еще в 5-ом посте написал, что такая конструкция:
    void* cont_replace(void* cont, int pos, void* data)
{
AL *from_cont_to_alstruct;
void *lost_data;

from_cont_to_alstruct = (AL*)malloc(sizeof(AL)); // <--- Вот тут ...

while ( ((from_cont_to_alstruct->count)!=pos) || (from_cont_to_alstruct->Next))
{
from_cont_to_alstruct = from_cont_to_alstruct->Next;
}
...
... приводит к утечким памяти. Зачем ты опять так делаешь malloc? Я же в седьмом посте написал, что надо сделать... Так делай это, а не создавай утечки...

Теперь - о том, почему у тебя
Цитата
в лучем случае программа запускается демонстрирует пустой экран и закрывается -в худшев уходит в ссылку на ошибку в какоам - то закрытом сишном файле....
- а что ты хотел, мой компилятор говорит, что стек разрушается.

Я поправил файлы, у меня (GCC) они компилируются и работают, но проверял только ДО cont_foreach() включительно!!!, до cont_release() еще не дошел... Посмотри, что я изменил для того, чтобы работала передаваемая в cont_foreach() функция print_data() ...


Прикрепленные файлы
Прикрепленный файл  ctnr.rar ( 3.01 килобайт ) Кол-во скачиваний: 191
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Neonig   Контейнеры в Си   22.09.2007 17:43
volvo   А вот по этому адресу лежат правила форума, в кото...   22.09.2007 19:39
Neonig   Извини пожалуйста, сейчас скачаю и прилеплю....Тол...   22.09.2007 20:38
Neonig   сам исходник. Условия в посте выше, цель вопроса, ...   22.09.2007 22:25
volvo   У тебя в коде есть утечки памяти, или мне кажется?...   23.09.2007 10:42
Neonig   У тебя в коде есть утечки памяти, или мне кажется...   23.09.2007 20:24
volvo   Смотри: void cont_add(void* cont, void* data) { ...   23.09.2007 20:47
Neonig   Ясно, значит переделаю остальные моменты под этот ...   23.09.2007 22:26
volvo   Я не знаю, чего ждут от тебя в этом задании (какой...   23.09.2007 23:30
Neonig   Я не знаю, чего ждут от тебя в этом задании (како...   24.09.2007 14:50
volvo   если сделать в cont_allocate выделение массива, ск...   24.09.2007 15:15
Neonig   если сделать в cont_allocate выделение массива, с...   24.09.2007 15:39
volvo   AL **array, *current; array = (AL **)malloc(20 * ...   24.09.2007 16:11
Neonig   Вот глнянь на общие принципы того ,как я это понял...   24.09.2007 16:12
Neonig   Вот, я сделал ещё динамический массив... посмотрит...   28.09.2007 20:45
volvo   А ты пример как раз ни один не привел, только реал...   28.09.2007 20:53
Neonig   Понял тебя...извини, что - то реально затупил с по...   29.09.2007 17:07
volvo   "Ну-с, приступим..." (С) "Напарник...   30.09.2007 0:16
Neonig   Сэнкс что взялся мне помочь, надеялся что следующи...   30.09.2007 11:44
volvo   Я предупредил, что у меня не MSVS, из за таких вот...   30.09.2007 12:01
Neonig   Посмотрел, работает вывод последовательностей, но ...   4.10.2007 18:13
volvo   Ты посты читать будешь? Я же написал в начале 19-...   4.10.2007 18:30
Neonig   Извини, все читал, просто забыл, суть понял... я з...   4.10.2007 19:15
Neonig   Снова дравствуйте. Можно как нибудь исходник ориен...   11.10.2007 21:32
volvo   Можно... Только надо видеть программу полностью......   11.10.2007 21:59


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 17.07.2025 15:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"