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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Контейнеры в Си, .
сообщение
Сообщение #1


Новичок
*

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

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


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

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



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


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


Новичок
*

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

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


сам исходник.
Условия в посте выше, цель вопроса, в первом сообщении, надеюсь на вашу помощь
Код
#include <stdio.h>
#include <stdlib.h>
#include "LinkedList.h"


void* cont_allocate()
{
    static AL *cont_v;
    void* from_al_to_void;
    cont_v = (AL*)malloc(sizeof(AL));
    from_al_to_void = &cont_v;
    cont_v->count = count;
    count++;
    cont_v->data = NULL;
    cont_v->Prev = NULL;
    cont_v->Next = NULL;
    return from_al_to_void;
}


void  cont_add(void* cont, void* data)
{
    AL *cont_insert;
    AL *from_cont_to_alstruct;
    int schet = 0;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    cont_insert = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*) cont;
    while(from_cont_to_alstruct->Next)
    {
            from_cont_to_alstruct = from_cont_to_alstruct->Next;
            schet++;
    }
    from_cont_to_alstruct->Next = cont_insert;
    cont_insert->Prev = from_cont_to_alstruct;
    cont_insert->data = data;
    cont_insert->count = schet++;
    cont_insert->Next = NULL;
}

void  cont_insert(void* cont, int pos, void* data)
{
    int shet = 0;
    AL *from_cont_to_alstruct;
    AL *pos_insert;
    
    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    pos_insert = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;
    while(((from_cont_to_alstruct->count)!= pos) || (from_cont_to_alstruct->Next))
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
        shet++;
    }
    
    pos_insert->Next = from_cont_to_alstruct->Next;
    from_cont_to_alstruct->Next = pos_insert;
    pos_insert->Prev = from_cont_to_alstruct;
    pos_insert->data = data;
}

int   cont_size(void* cont)
{
    AL *from_cont_to_alstruct;
    int razm_cont = 0;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;
    
    while(from_cont_to_alstruct->Next)
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
        razm_cont++;
    }
    return razm_cont;
}


void* cont_get(void* cont, int pos)
{
    AL *from_cont_to_alstruct;
    void* insert_data;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;

    while(((from_cont_to_alstruct->count)!=pos) || (from_cont_to_alstruct->Next))
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
    }

    insert_data = from_cont_to_alstruct->data;
    return insert_data;
}


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;    
    }

    lost_data = from_cont_to_alstruct->data;
    from_cont_to_alstruct->data = data;
    return lost_data;
}


void* cont_remove(void* cont, int pos)
{
    AL *from_cont_to_alstruct;
    AL *vrem_xran;
    void *lost_data;
    
    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    vrem_xran = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;
    while ( ((from_cont_to_alstruct->count)!=pos) || (from_cont_to_alstruct->Next))
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;    
    }
    lost_data = from_cont_to_alstruct->data;
    from_cont_to_alstruct->Prev->Next = from_cont_to_alstruct->Next;
    from_cont_to_alstruct->Next->Prev = from_cont_to_alstruct->Prev;
    from_cont_to_alstruct->Next = NULL;
    from_cont_to_alstruct->Prev = NULL;
    free(from_cont_to_alstruct);
    return vrem_xran;
}

void  cont_foreach(void* cont/*, cont_handle*/)
{
    AL *from_cont_to_alstruct;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;

    while(from_cont_to_alstruct->Next)
    {
//        cont_handle(from_cont_to_alstruct);
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
    }
}


void  cont_foreach_reverse(void* cont/*, cont_handle*/)
{
    AL *from_cont_to_alstruct;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;

    while(from_cont_to_alstruct->Next)
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
    }

    while(from_cont_to_alstruct->Prev)
    {
//      cont_handle(from_cont_to_alstructr);
        from_cont_to_alstruct = from_cont_to_alstruct->Prev;
    }
}


void  cont_release(void* cont)
{
    AL *from_cont_to_alstruct;

    from_cont_to_alstruct = (AL*)malloc(sizeof(AL));
    from_cont_to_alstruct = (AL*)cont;

    while(from_cont_to_alstruct->Next)
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Next;
    }

    while(from_cont_to_alstruct->Prev)
    {
        from_cont_to_alstruct = from_cont_to_alstruct->Prev;
        free(from_cont_to_alstruct);
    }
}



Сообщение отредактировано: Neonig -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 29.04.2024 5:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name