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

3.2.2. Граф-схема алгоритму

3.3. Результати виконання програми

Висновки

Виконуюючи курсову роботу я:

  • провів детальний аналіз літератури та Інтернет джерел за темою «Динамічні структури», що дало змогу сформувати як теоретичні основи понять стек, черга та список так і основні алгоритми реалізації та роботи із цими типами даних.

  • дослідив внутрішнє представлення в пам’яті комп’ютера базових і похідних типів даних статичної структури та динамічних структур даних;

  • проаналізував застосування списків на практиці, що дало змогу визначити, в яких цілях і з якою метою є їх найбільш доцільне використання. Було показано, що на даний час існує ряд специфічних задач і областей застосування, де без використання списка обійтись практично не можливо.

  • написав програму, тестуючи її на усі можливі результати роботи. У програмі зроблені коментарі, які роблять програму більш зрозумілою.

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

  1. Грегори К. Использование Visual С++. Специальное издание. - М.: «Диалектика», 1999.

  2. Мешков А.В., Тихомиров Ю.В. Visual С++ и MFC. Пер. с англ. – 2-е изд. перераб. и доп. – СПб.: БХВ - Петербург, 2002. – 1040 с.

  3. Страуструп Б. Язык программирования С++. Третье издание. - М.: «Издательство Бином», 1999.

  4. Трамбле Ж., Соренсон П. Введение в структуры данных. – М.:Машиностроение, 1982

  5. Уильям Топп, Уильям Форд. Структуры данных в С++. – М.:Бином, 2000 - 700 с

Додатки Частина 1. Побудова атд

//list.h

class SListNode {

public:

int data;

SListNode* next;

SListNode (int el);

};

class Clist{

public:

typedef SListNode *Clist::list;

static void print_list(list head);

static void push_before(list tmp, int x);

static void del(list *head_ptr, list *node_ptr);

static list find_before(list head, list node);

};

//list.cpp

#include "list.h"

#include <iostream>

using namespace std;

SListNode::SListNode (int el)

{

data = el;

next = NULL;

}

void Clist::print_list(Clist::list head)

{

Clist::list tmp=head;

while (tmp != NULL)

{

cout<<tmp->data<<"| ";

tmp = tmp->next;

}

cout<<endl;

return;

}

void Clist::push_before(Clist::list tmp, int x)

{

SListNode* q = new SListNode(tmp->data);

q->next=tmp->next;

tmp->data=x;

tmp->next=q;

}

Clist::list Clist::find_before(Clist::list head, Clist::list node)

{

while ((head->next != node) && head) head = head->next;

return head;

}

void Clist::del(Clist::list *head_ptr, Clist::list *node_ptr)

{

Clist::list tmp , save_ptr = *node_ptr;

if (*node_ptr == *head_ptr)

*head_ptr = (*head_ptr)->next;

else

if (!((*node_ptr)->next))

{

tmp = find_before(*head_ptr,*node_ptr);

tmp->next = NULL;

}

else

{

tmp = (*node_ptr)->next;

(*node_ptr)->data = tmp->data;

(*node_ptr)->next = tmp->next;

save_ptr = tmp;

};

free(save_ptr);

return ;

}

//main.cpp

#include <stdio.h>

#include <stdlib.h>

#include <fstream>

#include <conio.h>

#include "list.h"

#include <iostream>

using namespace std;

int main()

{

SListNode* head = new SListNode(0); //створення списку

int k,el;

bool empty = true;

cout<<"Enter count of elements - ";

cin>>k;

cout<<endl;

for (int i=0; i<k; i++) //опрацювання вх. послідовності

{

cout<<"\nEnter "<<(i+1)<<" element ";

cin>>el;

if(el >= 0) //якщо вх ел. не відємний

{

if(!empty) //якщо список не пустий

{

Clist::push_before(head,el); // на початок списку додається новий елемент

}

if(empty) //якщо список пустий

{

head -> data = el; //у нього додається елемент

empty = false;

}

Clist::print_list(head);

}

if(el<0) //якщо вх.ел. відємний

{

Clist::del(&head, &head);

Clist::print_list(head);

if (head == NULL) { empty = true; head = new SListNode(0); }

}

}

_getch();

return 0;

}

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