Страница 1 из 1

линейные структуры данных

Добавлено: 31 янв 2010, 02:02
arniland
Нужно сделать лабораторную касательно линейных структур данных и их использование в подпрограммах. Пока есть время подготовится и выучить теорию. Примерно такое нужно знать, способы формирования списков(включение в конец списка), принципы формирования списка(однонаправленный список со значениями 1-го списка). Также не очень хорошо знаю о самих линейных структурах. Нужно сделать лабораторную на Си. Просьба кинуть ссылку теорию для чтения с примерами кода или подсказать в какой книжке неплохо расписано касательно выше описанного. Интересует о стеках, очередях да и всех структурах данных. В задание нету вроде не про стеки и очереди и другие структуры данных, но все же просьба подкинуть теорию.
Вот задание которое мне нужно сделать, не знаю как его пока делать, поэтому и прошу теорию, ничего толкового не могу найти в гугле. Делать лабораторную за себя никого не прошу, а прошу помочь с теоретическим материалом.
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-функции - Проверка значения элемента списка на равенство символа ’а’

Re: линейные структуры данных

Добавлено: 31 янв 2010, 02:50
BulldozerBSG
Так сразу и не вспомнишь...

Вот это может помочь, правда примеры реализации списка написаны на паскале, но все же лучше чем ничего :)
http://algolist.manual.ru/ds/basic/index.php

Re: линейные структуры данных

Добавлено: 31 янв 2010, 09:47
Albor
Элементом однонаправленного списка является структура, состоящая из данных, хранящихся в списке (в Вашем случае это char) и указателя на следующий элемент.

Код: Выделить всё

struct Node
{
     char data;
     Node * pNext;
};
Если pNext==null, значит это последний элемент списка. Все операции с таким списком происходят последовательно от элемента к элементу, то есть нужно иметь указатель на первый элемент.

Re: линейные структуры данных

Добавлено: 31 янв 2010, 14:11
arniland
BulldozerBSG писал(а):Так сразу и не вспомнишь...

Вот это может помочь, правда примеры реализации списка написаны на паскале, но все же лучше чем ничего :)
http://algolist.manual.ru/ds/basic/index.php

к сожалению паскаль не учил, так что понять тяжело будет

Albor, спасибо конечно за разъяснение. Все равно я пока не сильно понял как писать эту лабораторную. В гугле ничего толкового не находится про списки. Интересует теория с примерами или какая то книжка, где это все неплохо расписано.

Re: линейные структуры данных

Добавлено: 31 янв 2010, 16:24
rrrFer
arniland
список состоит из узлов которые связаны ссылками друг на друга

Код: Выделить всё

struct Node{
     char data;    //данные узла
     Node * pNext; //ссылка на следующий узел
};
ИМХО полно информации по спискам. Т.А. Павловская "С/С++. Программирование на языке высокого уровня" страница 115 страница с иллюстрациями и примерами.