Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2013, 22:34   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Динамические структуры Си

Дайте пожалуйста ссылочку или объясните зачем нужны эти динамические структуры?
Буду переписывать экзамен, а преподаватель сказала, что 100% , будет задание по динамичиским структурам, а именно написать программу.
В гугл мне не тыкать. Теорию я знаю.
Картинку как перемещается список выучил наизусть, а вот как оно работает я хз.

Буду очень благодарен человеку, который доступно объяснит!!
Praud вне форума Ответить с цитированием
Старый 09.03.2013, 22:55   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Ваша любимая тема

Что именно не понятно в работе со структурами?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 09.03.2013 в 23:02.
Bugrimov вне форума Ответить с цитированием
Старый 09.03.2013, 23:09   #3
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Все)
Простое объявление.

Допустим знаю

Код:
struct LISTNODE
{
int data; // Для чего эта переменная?
struct LISTNODE *next // это что?
}LIST;
Далее у меня в программе идут функции:
Код:
LIST *create_list();
void display(LIST *lst);
void replace_item(LIST *lst);
struct LIST *head;
Что они делают?
Praud вне форума Ответить с цитированием
Старый 09.03.2013, 23:12   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
зачем нужны эти динамические структуры?
Они нужны когда заранее не известно сколько элементов в памяти будет размещено.
Это массивы, в которых элементы расположены рядом друг с другом (по факту упорядочены по типу). Динамические структуры представляют из себя отдельные островки памяти, связанные между собой мостиком-указателем (к примеру одно из полей элемента структуры), который соединяет все элементы в единую цепь.
Несмотря на то что перемещаться по такому списку трудно (чтоб добраться до очередного элемента нужно пройти по всей цепочки от начала до него, если конечно не держать дополнительный массив индексов-указателей, что делают СУБД) из списка легко удалять\добавлять или даже перемещать информацию. В отличие от массива на это уходит меньше времени.
Я не знаю каких примеров ты ждешь но здесь: http://www.programmersforum.ru/showthread.php?t=70310 они есть.

Цитата:
struct LISTNODE
{
int data; // Это переменная сожержашая данные элемента
struct LISTNODE *next // это указатель на следующий элемент по цепочке
}LIST;
Цитата:
Далее у меня в программе идут функции:
А их имена только пространно говорят о их назначении.
LIST *create_list(); создает список и возвращает указатель на его первый элемент
void display(LIST *lst); выводит на экран список
void replace_item(LIST *lst); бред какой-то
struct LIST *head; это не функция. Это переменная-указатель на первый элемент списка как правило.
I'm learning to live...

Последний раз редактировалось Stilet; 09.03.2013 в 23:14.
Stilet вне форума Ответить с цитированием
Старый 09.03.2013, 23:31   #5
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Вот прикинул функции создания списка и вывода информации из него. Не компилировал правда
Код:
struct List
{
	int number;
	List* next;
} *pr = NULL;

List* add(List *cell)
{
	//кидаем в функцию указатель на структура. если по этому адресу ничего нет (NULL)
	if (cell == NULL)
	{
		cell = new List;// захватываем память
		printf("Enter number\n");// загоняем в список инфу
		scanf("%d", &cell->number);
		cell->next = NULL;// cтавим указатель на следующий элемент в NULL
		return cell; 
	}
	// иначе -  вызываем ещё раз эту же функцию ,но в качестве параметра передаём следующий, от предыдущего элемента. Рекурсивный вызов.
	cell->next = add(cell->next);
	return cell;
}

void print(List *cell)
{
	// если дошли до NULL (конец списка, инфы нет)
	if (cell == NULL)
		return;// выходим из функции.
	printf("%d", cell->number);// выводим инфу, которая есть
	print(cell->next);// вызываем функцию вывода, но подаём в качестве праметра следующий элемент
}
Доступно?)
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 09.03.2013, 23:38   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Вполне доступно.......
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 10.03.2013, 00:00   #7
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Код:
cell = new List;// захватываем память
Если я не ошибаюсь функция new из с++, а мне Си подавай)

Или что такое new?
Praud вне форума Ответить с цитированием
Старый 10.03.2013, 00:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а мне Си подавай)
Читай про malloc() в таком случае.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2013, 00:13   #9
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Praud - ну я бы не сказал что это new функция, оператор енто В си существует функция malloc для захвата памяти.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 10.03.2013, 00:23   #10
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Ага, спасибо. А можете написать еще функцию main для этой программы?
А то не пойму какие аргументы писать при вызове add и print
Praud вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры TVIST95 Помощь студентам 0 27.12.2012 19:22
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Динамические структуры Natasha11 Помощь студентам 0 01.05.2012 14:34
Динамические структуры danilqa Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 12:16