Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx100 / Dokumentatsia_k_kursovoy_po_OOP.docx
Скачиваний:
58
Добавлен:
07.08.2013
Размер:
372.49 Кб
Скачать
  1. Основные приемы, используемые в работе

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

Рис. 3.1. Наглядный пример массива указателей на головы списков

1

4

7

10

13

2

5

8

11

14

3

6

9

12

15

  1. Описание основных функций программы

Ниже будут представлены листинги кода основных функций программы, с пояснениями.

    1. Шаблон класса

С помощью классов, легко сгруппировывать информацию об объекте воедино. Класс содержит в себе член-данные и член-функции.

template <class T>

class Array

{

public:

Array();

Array(int size, int MaxSize);

~Array();

void AddElem();

void AddElem(int position);

void DelElem(int position);

void SortALL();

void ShowAll();

private:

ListElem<T> **Arr;

bool IsListFull(int index);

void Change(T a[], T first, T second);

T FindMax(T a[], int max);

void Sort(T b[], int max);

int MaxCount; //Максимальная длина списка

int CurSize; //Текущий размер односвязного списка

int ArrSize; //Размер массива указателей

int pointer; //Указатель на вставку элемента

};

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

    1. Структура элемента списка

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

template <class T>

struct ListElem

{

T *objects;

int countObj; //Количество объектов

ListElem<T> *pNext;

};

    1. Функция простого добавления элемента в список

Данная функция добавляет элемент на первое свободное место в списке. Так же, если нам не хватает массива указателей, она память под ещё одну ячейку и, записывает элемент в неё.

template <class T>

void Array<T>::AddElem()

{

if (CurSize==MaxCount)

{

pointer++;

CurSize=0;

}

if (pointer==ArrSize)

{

Arr[pointer]=new ListElem<T>;

Arr[pointer]=NULL;

ArrSize++;

}

int count=0;

cout<<"Enter count of elements=";

cin>>count;

if (count<=0)

{

cout<<"Non of elements"<<endl;

return;

}

ListElem<T> *NewElem = new ListElem<T>;

NewElem->countObj=count;

NewElem->objects=new T[count];

for (int i = 0; i < count; i++)

{

cout<<"Enter element=";

cin>>NewElem->objects[i];

}

ListElem<T> *cur = Arr[pointer];

if (cur==NULL)

{

Arr[pointer]=NewElem;

NewElem->pNext=NULL;

}

else

{

while(cur->pNext!=NULL)

cur=cur->pNext;

cur->pNext=NewElem;

NewElem->pNext=NULL;

}

CurSize++;

}

Соседние файлы в папке курсовая docx100