Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Робота з лінійними зв’язаними списками. Структури даних стек та черга

Автор:   •  Май 21, 2022  •  Лабораторная работа  •  1,222 Слов (5 Страниц)  •  156 Просмотры

Страница 1 из 5

  

  

Лабораторна робота №5

Тема: Робота з лінійними зв’язаними списками. Структури даних стек та черга .

Мета роботи: Отримати навики роботи зі стеком та чергою, реалізованими у вигляді зв’язного лінійного списку.

Хід роботи

[pic 1]

Код програми:

#include <iostream>

#include<string>

using namespace std;

struct Node

{

    int data;

    Node* link;

};

Node* top;

// К-сть елементів у стеку

int Count()

{

    if (top == nullptr)

        return 0;

    else

    {

        Node* p = top;

        int count = 0;

        while (p != nullptr)

        {

            count++;

            p = p->link;

        }

        return count;

    }

}

//функція перевірки, чи є значення x у однозв’язному списку

bool search(Node* top, int x)

{

    Node* current = top; // ініціалізація current

    while (current != NULL)

    {

        if (current->data == x)

            return true;

        current = current->link;

    }

    return false;

}

// функція для додавання елемента

// дані в стеку вставляють на початку

void push(int data)

{

    // Створення  нового вузлу temp і розподілення пам'яті у купі

    Node* temp = new Node();

    // Перевірка, чи стек  є повний

    // Тоді вставлення елемента призведе

    // до переповнення стека

    if (!temp)

    {

        cout << "\nStack Overflow";

        exit(1);

    }

    // Інаіціалізація data у поле тимчасових даних

    temp->data = data;

    // Поміщаємо посилання на верхній покажчик у тимчасове посилання

    temp->link = top;

    //  temp стає вершиною стека

    top = temp;

}

// Функція перевірки чи стек порожній чи ні

int isEmpty()

{

    //Якщо top дорівнює NULL, це означає, що

        // у стеку немає елементів

    return top == NULL;

}

//Функція  для повернення верхнього елемента в стеку

int peek()

{

    // Iякщо стек не порожній , то повертаємо top element

    if (!isEmpty())

        return top->data;

    else

        exit(1);

}

// виштовхнути в top елемент із стеку

void pop()

{

    Node* temp;

    // перевіряємо стек на underflow

    if (top == NULL)

    {

        cout << "\nStack Underflow" << endl;

        exit(1);

    }

    else

    {

        // присвоюємо top в temp

        temp = top;

        // присвоюємо другий вузол в top

        top = top->link;

        // Це автоматично знищить

        // зв'язок між першим і другим вузлом

       // Звільнення пам'яті верхнього вузла

        //тобто видалити вузол

        free(temp);

    }

}

//Функція виведення всіх елементів стека

void display()

...

Скачать:   txt (5.3 Kb)   pdf (168.6 Kb)   docx (93.5 Kb)  
Продолжить читать еще 4 страниц(ы) »
Доступно только на Essays.club