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

Заключение

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

Программа была реализована на языке программирования Си++ в среде Microsoft Visual C++ 2008 Express Edition.

Список использованных источников

  1. Дональд Кнут Искусство программирования. — 3-е изд. — М.: «Вильямс», 2006. — 720 с.

  2. Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы— 1-е изд. — М.: «Вильямс», 2000. — 560 с.

  3. Кармен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы. Построение и анализ. — 2-е изд. — М.: «Вильямс», 2005. — 1290 с.

  4. Кауфман В.Ш.Языки программирования. Концепции и принципы. М.: ДМК Пресс, 2010 .

Приложение а. Исходный код программы

#include "stdafx.h"

#include <iostream>

#include <cstdlib>

#include <ctime>

struct TPoint

{

int x, y;

TPoint(): x(0), y(0) { ; }

TPoint(int theX, int theY): x(theX), y(theY) { ; }

};

struct TNode

{

TPoint point;

TNode* next;

TNode* prev;

};

//----------------------------------------------//

TNode* Push(TNode*& list, const TPoint& point)

{

TNode* node = new TNode;

node->point = point;

if (list == NULL)

{

node->next = node->prev = node;

}

else

{

node->next = list;

node->prev = list->prev;

list->prev = node;

node->prev->next = node;

}

list = node;

return list;

}

//----------------------------------------------//

TPoint Pop(TNode*& list)

{

if (list == NULL)

{

return TPoint();

}

TPoint val(list->point);

TNode* node = list;

if ((list->next == list) || (list->prev == list))

{

list = NULL;

}

else

{

list->prev->next = list->next;

list->next->prev = list->prev;

list = list->next;

}

delete node;

return val;

}

//----------------------------------------------//

std::ostream& operator << (std::ostream& os, const TPoint& point)

{

os << "[" << point.x << "," << point.y << "]";

return os;

}

//----------------------------------------------//

std::ostream& operator << (std::ostream& os, const TNode* node)

{

if (node)

{

const TNode* cursor = node;

for (; cursor->next != node; cursor = cursor->next)

{

os << cursor->point << " ";

}

os << cursor->point;

}

else

{

os << "nil";

}

return os;

}

//----------------------------------------------//

int main()

{

srand(time(NULL));

TNode* list = NULL;

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

{

TPoint point(rand()%100 - 50, rand()%100 - 50);

Push(list, point);

std::cout << "addition: " << point << std::endl;

std::cout << "list: " << list << std::endl;

}

while (list)

{

std::cout << "deleted: " << Pop(list) << std::endl;

std::cout << "list: " << list << std::endl;

}

system("pause");

return 0;

}

28

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