![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Neonig |
![]()
Сообщение
#1
|
|||
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите разобраться с заданием пожалуйста.
Вот по этому адресу (адрес указан в приложенном файле) лежит задание для нас. Там правда сказано на С++ без ООП, но преподаватель сказал, что на НАМ нужно на чистом Си. В файле на сайте все написанное и приведены три задания: двусвязный линейный список, ассоциативный массив и динамический массив. В Листинге который я выложу дальше я по идеи реализовал первое задание - линейный список - очень прошу специалистов посмотреть и высказать замечания, где может не правильно, где недодумано, где ещё чего. Вторая просьба - это пояснить, как основываясь на интерфейсе списков сделать динамический массив (это всё в здании написано просто коротко напоминаю) и что из себя таки представляет этот ассоциативный массив в примитивной реализации... не прошу написать, прошу объяснить как на основе сделанного прийти ко всему остальному. С уважением
Сообщение отредактировано: klem4 - 23.09.2007 8:06 Прикрепленные файлы ![]() |
|||
![]() ![]() |
Neonig |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
сам исходник.
Условия в посте выше, цель вопроса, в первом сообщении, надеюсь на вашу помощь Код #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 - 22.09.2007 22:29 |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 15:02 |