Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Aisd_kursavaya_A_M_G 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
122.57 Кб
Скачать

Результаты

Рис.1

Рис.2

Рис.3

Рис.4

Заключение

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

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

Список литературы

1. Айламазян А. К., Информатика и теория развития. - М.: Наука, 1992.

2. Говорухин В. Н., Цибулин В. Г. Компьютер в математическом исследовании. \ Учебный курс. - СПб.: Питер, 2001.

3. Гук М.Ю. Процессоры Intel от 8086 до Pentium II. СПб.: Питер, 1997

5. Данчула А. Н. Информатика Издательство РАГС, 2004- 528

6. Дьяконов В. П. Компьютерная математика. Теория и практика. /В. П. Дьяконов. - М. 2001.

7.Зелковиц М. Языки программирования: разработка и реализация

8. Каймин В.А. Информатика: Учебник. - М.: ИНФРА-М,2000. - 232 с. - (Серия «Высшее образование»).

9. Могилев А. В., Пак Н. И., Хеннер Е. К., Информатика, М., «Академия», 2004.

10. Нортон П., Соухэ Д. Язык ассемблера для IBM PC. М.: Компьютер, 1992.

11. Павловская Т. А. С/С++. Программирование на языке высокого уровня. Питер - 2005.

Приложение 1

#include <iostream>

#include <conio.h>

using namespace std;

struct stack

{

int a;

stack *pred;

};

void postr(stack *&top, int size)

{

int x;

for (int i = 1; i <= size; i++)

{

if (top == NULL)

{

top = new stack;

cout << "Введите значение:";

cin >> x;

top->a = x;

top->pred = NULL;

}

else

{

stack *p = new stack;

std::cout << "Введите значение след. элемента:";

std::cin >> x;

p->a = x;

p->pred = top;

top = p;

}

}

}

void vivod(stack *top, int size)

{

stack *p = top;

cout << "stack:";

while (p != NULL){

cout << p->a;

p = p->pred;

}

cout << endl;

}

void addToTop(stack *&top, int &size)

{

size = size + 1;

stack *p = new stack;

int dz;

cout << "\nДобавить элемент в начало:";

cin >> dz;

p->a = dz;

p->pred = top;

top = p;

}

void addToPos(stack *&top, int size){

stack *p = top;

stack* newElem = new stack;

int pos;

cout << "На какую позицию вы хотите вставить элемент?" << endl;

cin >> pos;

if ((pos - size) > 1){ //Если пользователь введет позицию, больше чем размер стека

pos = size + 1;

}

if (pos == 1){

addToTop(top, size);

return;

}

cout << "Введите значение 'a' элемента:";

cin >> newElem->a;

for (int i = 1; i <= pos - 2; i++){

p = p->pred;

}

newElem->pred = p->pred;

p->pred = newElem;

}

void delet(stack *&top, int size)

{

stack *p = top;

cout << "\nудалить элемент из позиции: ";

int delPos;

cin >> delPos;

if (delPos < 1 || delPos > size){ //Если будет введена недопустимая позиция

cout << "Недопустимая позиция. Выход из функции..." << endl;

return;

}

if (delPos == 1){

cout << "Удаляем голову..." << endl;

top = top->pred;

delete p;

return;

}

for (int i = 1; i <= delPos - 2; i++){

p = p->pred;

}

stack *boof = p->pred;

p->pred = boof->pred;

delete boof;

}

void poisk(stack *&top, stack *&p)

{

std::cout << "\nВедите искомое значение:";

int b;

std::cin >> b;

p = top;

while (p)

{

if (p->a == b)

{

std::cout << "\nДанный элемен присуствует в стеке"<<std::endl;

break;

}

p = p->pred;

}

if (p == NULL)

{

std::cout << "\nЭлемент ненайден" << std::endl;

}

}

int main()

{

setlocale(LC_ALL, "Russian");

int size;

cout << "Стек состоит из:" <<endl;

std::cin >> size;

stack *top = NULL;

stack*p = NULL;

postr(top, size);

system("cls");

vivod(top, size);

char number;

do

{

cout << "1. Добавить элемент" << endl;

cout << "2. Удалить элемент" << endl;

cout << "3. Добавить элемент в начало " << endl;

cout << "4. поиск элемента в очереди " << endl;

cout << "0. Выйти" << endl;

cout << "Номер команды > "; cin >> number;

switch (number)

{

case '1': addToPos( top, size);

vivod(top, size);

break;

case '2': delet(top, size);

vivod(top, size);

break;

case '3': addToTop(top, size);

vivod(top, size);

break;

case'4': poisk(top,p);

case'0': break;

default: cout << endl << "Команда не определена\n\n";

break;

}

} while (number != '0');

//_getch();

return 0;

}

Приложение 2

#include<iostream>

#include<conio.h>

#include<Windows.h>

using namespace std;

struct qucue

{

int a;

qucue *next;

};

void postr(qucue *&top, int size)

{

int x;

qucue *tail = NULL;

for (int i = 1; i <= size; i++)

if (top == NULL)

{

top = new qucue;

std::cout << "Ведите главный элемент:";

std::cin >> x;

top->a = x;

top->next = NULL;

tail = top;

}

else

{

qucue *p = new qucue;

std::cout << "Ведите значение:";

std::cin >> x;

p->a = x;

p->next = NULL;

tail->next = p;

tail = p;

}

}

void vivod(qucue *&top,int &size)

{

qucue *p = top;

cout << "qucue:";

for (int i = 1; i <=size; i++)

{

std::cout << p->a;

p = p->next;

}

cout << std::endl;

}

void addToTop(qucue *&top, int &size)

{

size = size + 1;

qucue*p = new qucue;

int dz;

std::cout << "\nДобавить элемент в начало:";

std::cin >> dz;

p->a = dz;

p->next = top;

top = p;

}

void addToPos(qucue *&tail,qucue *&top, int &size){

qucue *p = top;

qucue* newElem = new qucue;

int pos;

std::cout << "На какую позицию вы хотите вставить элемент?" << std::endl;

std::cin >> pos;

if ((pos - size) > 1){ //Если пользователь введет позицию, больше чем размер

pos = size + 1;

}

if (pos == 1){

tail->next = p;

tail = p;

return;

}

std::cout << "Введите значение 'a' элемента:";

std::cin >> newElem->a;

for (int i = 1; i <= pos - 2; i++){

p = p->next;

}

newElem->next = p->next;

p->next = newElem;

}

void delet(qucue *&top, int &size)

{

qucue *p = top;

std::cout << "\nудалить элемент из позиции: ";

int delPos;

std::cin >> delPos;

if (delPos < 1 || delPos > size){ //Если будет введена недопустимая позиция

std::cout << "Недопустимая позиция. Выход из функции..." << std::endl;

return;

}

if (delPos == 1){

std::cout << "Удаляем голову..." << std::endl;

top = top->next;

delete p;

size = size - 1;

return;

}

for (int i = 1; i <= delPos - 2; i++){

p = p->next;

}

qucue *boof = p->next;

p->next = boof->next;

delete boof;

size = size - 1;

}

void poisk(qucue *&top, qucue *&p)

{

std::cout << "\nВедите искомое значение:";

int b;

std::cin >> b;

p = top;

while (p)

{

if (p->a == b)

{

std::cout << "\nДанный элемен присуствует в очереди";

break;

}

p = p->next;

}

if (p == NULL)

{

std::cout << "\nЭлемент ненайден";

}

}

int main()

{

setlocale(LC_ALL, "Russian");

int size;

std::cout << "Очередь состоит из:";

std::cin >> size;

qucue *tail = NULL;

qucue *top = NULL;

qucue *p = NULL;

postr(top, size);

system("cls");

vivod(top, size);

char number;

do

{

cout << "1. Добавить элемент" << endl;

cout << "2. Удалить элемент" << endl;

cout << "3. Добавить элемент в начало " << endl;

cout << "4. поиск элемента в очереди " << endl;

cout << "0. Выйти" << endl;

cout << "Номер команды > "; cin >> number;

switch (number)

{

case '1': addToPos(tail, top, size);

vivod(top, size);

break;

case '2': delet(top, size);

vivod(top, size);

break;

case '3': addToTop(top, size);

vivod(top, size);

break;

case'4': poisk(top, p);

case'0': break;

default: cout << endl << "Команда не определена\n\n";

break;

}

} while (number != '0');

//_getch();

return 0;

}

Приложение 3

#include <iostream>

#include <conio.h>

using namespace std;

struct decue

{

int a;

decue *pred;

decue *next;

};

void postr(decue *&tail, decue *&top, int size)

{

int x;

for (int i = 1; i <= size; i++)

if (top == NULL)

{

top = new decue;

top->pred = NULL;

top->next = NULL;

std::cout << "Vedite pervoe znachenie :";

std::cin >> x;

top->a = x;

tail = top; //На данном этапе и хвост и голова указывают на один и тот же элемент

}

else

{

decue *p = new decue;

cout << "Vedite znachenie:";

cin >> x;

p->a = x;

tail->pred = p;

p->pred = NULL;

p->next = tail;

tail = p;

}

}

void vivod(decue *&top, int size)

{

decue *p = top;

cout << "deque:";

while (p != NULL){

cout << " " << p->a;

p = p->pred;

}

}

void add(decue *&top, int &size)

{

decue *p = new decue;

int dz;

cout << "\nдобавить число в начало:";

cin >> dz;

size = size + 1;

p->a = dz;

p->pred = top;

p->next = NULL;

top->next = p;

top = p;

}

void addToPos(decue *&tail, decue *&top, int &size){

decue *p = top;

decue* newElem = new decue;

int pos;

std::cout << "\nНа какую позицию вы хотите вставить элемент?" << std::endl;

std::cin >> pos;

if ((pos - size) > 1){ //Если пользователь введет позицию, больше чем размер

pos = size + 1;

}

if (pos == 1){

add(top, size);

return;

}

std::cout << "Введите значение 'a' элемента:";

std::cin >> newElem->a;

for (int i = 1; i <= pos - 2; i++){

p = p->pred;

}

newElem->pred = p->pred;

newElem->next = p->next;

p->pred = newElem;

}

void delet(decue *&top, int &size)

{

decue*p = top;

std::cout << "\nудалить элемент из позиции: ";

int delPos;

std::cin >> delPos;

if (delPos < 1 || delPos > size){ //Если будет введена недопустимая позиция

std::cout << "Недопустимая позиция. Выход из функции..." << std::endl;

return;

}

if (delPos == 1){

std::cout << "Удаляем голову..." << std::endl;

top = top->next;

delete p;

size = size - 1;

return;

}

for (int i = 1; i <= delPos - 2; i++){

p = p->pred;

}

decue *boof = p->pred;

p->pred = boof->pred;

p->next = boof->next;

delete boof;

size = size - 1;

}

int main()

{

setlocale(LC_ALL, "Russian");

decue *top = NULL;

decue *tail = NULL; //Хвост

int size;//размер

cout << "Сколько элементов в деке:";

cin >> size;

postr(tail, top, size);

system("cls");

vivod(top, size);

cout << endl;

char number;

do

{

cout << "1. Добавить элемент" << endl;

cout << "2. Удалить элемент" << endl;

cout << "3. Добавить элемент в начало " << endl;

cout << "0. Выйти" << endl;

cout << "Номер команды > "; cin >> number;

switch (number)

{

case '1': addToPos(tail, top, size);

vivod(top, size);

cout << endl;

break;

case '2': delet(top, size);

vivod(top, size);

cout << endl;

break;

case '3': add(top, size);

vivod(top, size);

break;

case'0': break;

default: cout << endl << "Команда не определена\n\n";

break;

}

} while (number != '0');

return 0;}

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