Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.doc
Скачиваний:
2
Добавлен:
04.09.2019
Размер:
223.23 Кб
Скачать

МИНИСТЕРСТВО образованиЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Донской государственный технический университет»

КАФЕДРА «ПОВТ И АС»

ЛАБОРАТОРНАЯ РАБОТА № 5

по дисциплине:

«Объектно-ориентированное программирование»

на тему:

«Динамический структуры данных»

Выполнил: ст.гр. ВИ31

Малыгин А.Ю.

Проверила: Болдырева А.А.

г.Ростов-на-Дону

2012г.

Содержание.

  1. Постановка задачи

  2. Тестирование программы

  3. Листинг

  1. Постановка задачи

Цель: «Изучение основных приемов использования указателей для создания динамических структур данных, отображаемых списков»

В условии лабораторной работы требует выполнить 3 задания, основанных на работе с выделением блоков памяти, связи их посредством указателей, и использования новых типовых структур для создания списков и стеков.

2. Тестирование программы

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

Код функций: struct sp {

int ch;

sp *next,*last;

};

sp *nach;

void sshow(){

sp *tmp=nach;

wcout<<L"Какие элементы хранятся в очереди: \n\r";

while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).next;}

getch();

}

void snew(){

sp *tmp,*now;

int info;

wcout<<L"Введите число для добавления в очередь: ";

cin>>info;

tmp=nach;

if (tmp!=NULL) while ((*tmp).next!=NULL) tmp=(*tmp).next;

now=tmp;

tmp=(sp *)malloc(sizeof(sp));

if (now==NULL) {nach=now=tmp; (*tmp).last=NULL;}

else {(*now).next=tmp; (*tmp).last=now;}

(*tmp).ch=info;

(*tmp).next=NULL;

now=tmp;

wcout<<L"\nЧисло добавленно в очередь!";

getch();

}

void sdel(){

sp *tmp;

Int info;

sshow();

if (nach==NULL) {wcout<<L"\nОчередь пуста - возвращаемся в меню!"; getch(); return ;}

wcout<<L"\nВведите, число которое хотите удалить: "; cin>>info;

tmp=nach;

while (tmp!=NULL && (*tmp).ch!=info) tmp=(*tmp).next;

if (tmp==NULL) {wcout<<L"\nТакого элемента нет - возвращаемся в меню!"; getch(); return ;}

if (tmp==nach) nach=(*tmp).next;

if ((*tmp).last!=NULL) (*(*tmp).last).next=(*tmp).next ;

if ((*tmp).next!=NULL) (*(*tmp).next).last=(*tmp).last ;

free(tmp);

wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";

sshow();

}

Переходим к реализации второго задания, иии вот мы удалили последний помещенный элемент в стек:

Код функций:

struct sp {

int ch;

sp *last;

};

sp *endst;

void sshow(){

sp *tmp=endst;

wcout<<L"Какие элементы хранятся в стеке: \n\r";

while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).last;}

getch();

}

void snew(){

sp *tmp;

int info;

wcout<<L"Введите число для добавления в стек: ";

cin>>info;

tmp=(sp *)malloc(sizeof(sp));

if (endst==NULL) {endst=tmp; (*tmp).last=NULL;}

else (*tmp).last=endst;

(*tmp).ch=info;

endst=tmp;

wcout<<L"\nЧисло добавленно в стек!";

getch();

}

void sdel(){

sp *tmp;

sshow();

if (endst==NULL) {wcout<<L"\nСтек пуст - возвращаемся в меню!"; getch(); return ;}

tmp=endst;

endst=(*endst).last;

free(tmp);

wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";

sshow();

}

А теперь мы создаем свое множество чисел:

Код функций:

int count,*nach;

void oshow(){

wcout<<L"\nЭлементы, которые хранятся в множестве: \n";

for (int i=0;i<=count; cout<<nach[i++]<<", ");

getch();

}

int prov(int info){

for(int i=0;i<=count;++i) if (nach[i]==info) return 1;

return 0;

}

void onew(){

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]