Создать стек

Владислав56

Задание:Создать стек. Написать функцию, определяющую, есть ли заданная компонента в стеке.В программу включить меню работы с программой, которое должно содержать пункты: а) создание исходной динамической структуры данных; б) вывод на экран информации, хранящейся в динамической структуре данных; в) поиск заданной информации в динамической структуре; г) вставка и удаление информации из связанных динамических структур, корректировка значений; д) выход из программы; P.S. можно и без меню, просто создать стек и написать функцию.
1 ответ

Владислав56

Начало положено. меню сам придумай.
Кликните здесь для просмотра всего текста
#include <iostream>
 
struct List
{
    List *next;
    int key;
};
 
List* Push(int num = 0,List **stack = NULL)
{
    if (!stack)
    {
        stack = new List*;
        *stack = new List;
        (*stack)->key = num;
        (*stack)->next = NULL;
        return *stack;
    }
    else
    {
        List *begin = new List;
        begin->key = num;
        begin->next = *stack;
        *stack = begin;
        return *stack;
    }
}
 
int Pop(List **stack)
{
    if (*stack)
    {
        int a = (*stack)->key;
        List *temp = *stack;
        *stack = (*stack)->next;
        delete temp;
        return a;
    }
    return -1;
}
 
void Print(List **stack)
{
    if (stack)
    {
        List *temp = *stack;
        while (temp)
        {
            std::cout << temp->key << std::endl;
            temp = temp->next;
        }
    }
}
 
List* Search(List **stack, int Key_Search)
{
    if (stack)
    {
        while (*stack)
        {
            if ((*stack)->key == Key_Search)
            {
                return *stack;
            }
            *stack = (*stack)->next;
        }
    }
        return NULL;
}
 
int main()
{
    List *a = Push(5);
    Push(7, &a);
    Push(10, &a);
    Print(&a);
    Pop(&a);
    std::cout << std::endl;
    Print(&a);
    List *b = Search(&a, 7);
    std::cout << std::endl;
    Print(&b);
    system("pause");
}