Cтек
Стек - одна из полезных структур данных. Для стека характерны такие операции как вставлять и удалять данные, но выпалняются они только над самым верхним элементом(вершиной стека). Такой порядок называется "первым вошел, последним вышел".
Реалезуем стек для хранения символьных значений(букв), с помощью структуры и нескольких функций. Для хранения данных мы создадим структуру stak состоящую из массива s, хранящего наши данные, и переменной top которая будет хранить номер верхнего элемента.
struct stack
{
char s[1000];
int top;
};
Теперь создадим функцию reset задача которой инициализация. В ней нам достачно переменной top присвоить значение -1. В качестве параметра ей будет передоватся указатель на структуру (при использовании указателя для доступа к членам структуры используется не ".", а оператор "->").
void reset(stack* st)
{
st->top = -1;
}
Так же нам нужны функции push(вставить) и pop(извлечь).

void push(stack* st, char s)
{
++st->top;
st->s[st->top] = s;
}
char pop(stack* st)
{
--st->top;
return st->s[st->top];
}
Теперь напишем функцию main, чтобы проверить нашу версию стека, функция будет печатать строку в обратном порядке.

main()
{
char str[] = "My name is Gena";
int count = sizeof(str);
stack My_stack;
reset(&My_stack);
for(int i = 0; i < count; i++)
{
push(&My_stack, str[i]);
}
while(My_stack.top != -1)
{
cout << pop(&My_stack);
}
cout << endl;
}
Полностью текст программы должен выглядеть так:
#include <iostream.h>
struct stack
{
char s[1000];
int top;
};
void reset(stack* st)
{
st->top = -1;
}
void push(stack* st, char s)
{
++st->top;
st->s[st->top] = s;
}
char pop(stack* st)
{
--st->top;
return st->s[st->top];
}
main()
{
char str[] = "My name is Gena";
int count = sizeof(str);
stack My_stack;
reset(&My_stack);
for(int i = 0; i < count; i++)
{
push(&My_stack, str[i]);
}
while(My_stack.top != -1)
{
cout << pop(&My_stack);
}
cout << endl;
}
Сайт создан в системе uCoz