Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> линейные структуры данных 
:(
    Опции темы
ArniLand
Дата 29.1.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Нужно сделать лабораторную касательно линейных структур данных и их использование в подпрограммах. Пока есть время подготовится и выучить теорию. Примерно такое нужно знать, способы формирования списков(включение в конец списка), принципы формирования списка(однонаправленный список со значениями 1-го списка). Также не очень хорошо знаю о самих линейных структурах. Нужно сделать лабораторную на Си. Просьба кинуть ссылку теорию для чтения с примерами кода или подсказать в какой книжке неплохо расписано касательно выше описанного. Заранее спасибо.
PM MAIL   Вверх
comcon1
Дата 29.1.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Для начала перечисли структуры, которые тебя интересуют. Список, Очередь, Стек, Очередь с двумя концами, Вектор. Что еще?

Вот смотри, есть википедия:
http://en.wikipedia.org/wiki/Queue_%28data_structure%29


--------------------
PM MAIL   Вверх
ArniLand
Дата 29.1.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



comcon1, вот задание которое нужно сделать, и по нему прошу дать теорию чтобы разобраться. Нету ли на русском с примерами? smile 
1.    Создание из файла (с расширением .h). В файле описывается: 
–    линейная структура данных в связанном представлении (список), элемент которой имеет тип согласно варианту (табл.1); 
–    открытая подпрограмма (inline-функция) согласно варианту (табл.2).
2.    Создание основного файла (с расширением .cpp), в котором необходимо:
 –    включить заглавный файл с помощью директивы препроцессора include;
 –    описать „подпрограмму_1” формирование элемента первого списка согласно варианту (табл.1);
–    описать „подпрограму_2” формирование второго списка согласно варианту (табл.2). При формировании используется inline-функция; 
–    описать главную программу, в которой применяются описанные подпрограммы, то есть формируется первый список с помощью „подпрограммы_1” (количество элементов согласно варианту) и формируется второй список с помощью „подпрограммы_2”.

Таблица 1
Тип данных элемента списков - char
Количество элементов 1-го списка - 7
Первый список - Однонаправленный
Способ формирования элемента 1-го списка -  Включение в конец списка


Таблица 2
Принцип формирования 2-го списка - Однонаправленного списка из значений элементов  1-го списка, которые не равняются символу ’а’
Способ формирования элемента 2-го списка - Включение к началу списка
Назначение  inline-функции - Проверка значения элемента списка на равенство символа ’а’


PM MAIL   Вверх
comcon1
Дата 29.1.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



И где тут линейные структуры, кроме Списка?

Список - это структура:

структура Элемент {
указатель_на_Элемент ук;
тип_элемента_списка эл;
}

все.

ты должен хранить первый элемент. через указатели переходишь на любые другие элементы. соответственно сам понимаешь, как что удалять/добавлять/искать.  какая теория?

Теорию по типам данных имеет смысл читать, когда ты хочешь знать чем отличаются различные типы данных. Куда быстрее добавлять, где быстрее искать и т.д.. 


--------------------
PM MAIL   Вверх
ArniLand
Дата 29.1.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



а какая неплохая теория есть по структурам данным, по всем? интересует по Си
PM MAIL   Вверх
world
Дата 29.1.2010, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: нет
Всего: 12



Ну структуры данных они везде одни и теже
Лично я советую почитать
1.Алгоритмы: построение и анализ Т. Кормен, Ч. Лейзерсон, Р. Ривест
2.Фундаментальные алгоритмы на C++ Сэджвик Р.
Эти книги - класика.
--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
ArniLand
Дата 12.2.2010, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



все равно как писать программу я не знаю. Вот раздобыл код программы написанной по выше указанному заданию, но пока не сильно могу его понять. Прошу, пожалуйста подскажите по каким темам пройтись в книге по программирование чтобы понять как работает программа и потом смочь объяснить каждую строчку в программе и самому уметь подобное написать. Программа написана по выше описанному заданию. На вопрос что конкретно мне не понятно - с кодом h. файла мне все ясно, но что делает программа в cpp. файле мне не понятно. Просьба подсказать что можно поэтому почитать. Выше указанная литература не подошла потому что не привязана к Си
Код

#include <laba6m2.h>

void Crt_Element(Element* &, char);  
Element* List(Element* &);

void main()
{
 int i=1;
 float F;
 Element* pList1=0;
 Element* pList2=0;
 for(i=1;i<=7;i++)
 {
 Crt_Element(pList1,i+4);
 }
 pList2=List(pList1);
}

void Crt_Element(Element* & FirstEl, char F)

{
 Element* New_Element;
 Element* Cur_Element;
 New_Element=new(Element);
 if(FirstEl==0)
 {
  New_Element->CA=F;
  New_Element->EA=FirstEl;
  FirstEl=New_Element;
 }
 else
 {
  New_Element->CA=F;
  New_Element->EA=0;
  Cur_Element=FirstEl;

  while(Cur_Element->EA != 0)
  {                         
   Cur_Element=Cur_Element->EA;
  }
  
  Cur_Element->EA=New_Element;

 }
}

Element* List(Element* & AddList1)
 Element* New_Element;
 Element* AddList2=0;
 Element* List;

while(AddList1->EA!=0)
{
 if(check(AddList1))
 { 
  New_Element=new(Element); 
  New_Element->CA=AddList1->CA
  New_Element->EA=AddList2;
  if (AddList2==0)List=AddList2; 
 
  AddList2=New_Element; 
 }
  AddList1=AddList1->EA;
}
 return List;
}



Код h. файла
Код

struct Element
{
 char CA;
 Element* EA;
};
 
 inline int check(Element* Element1)
 {
 if ((Element1->CA)=='a')
  return 1; 
 else
  return 0;
 }
  

PM MAIL   Вверх
bsa
Дата 12.2.2010, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ArniLand, односвязный список, это такой контейнер данных, каждый элемент которого содержит указатель на следующий. Т.е. односвязный список, это набор связанных структур типа:
Код
template<typename T>
struct Entry
{
    T data;
    Entry *next;
};
Чтобы добавить к нему запись, нужно перейти к последнему элементу списка (у него next равен NULL), выделить память под новый объект типа Entry<T> и его адрес присвоить полю next найденного последнего элемента. Удаление аналогично - нужно найти удаляемый элемент и предыдущий, в поле next предыдущего вписать значение поля next удаляемого, и освободить память занимаемую удаляемым.

Это сообщение отредактировал(а) bsa - 12.2.2010, 11:51
PM   Вверх
bsa
Дата 12.2.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ArniLand, не используй чужой код, раз разобраться в нем не можешь. Напиши свой. Необходимые алгоритмы я тебе уже подсказал.

А так же почитай правила форума, в частности, пункт 14[/url]
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.3931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.