Пример
11
Стек
- одна из полезных структур данных. Для стека характерны такие
операции как вставлять и удалять данные, но выпалняются они
только над самым верхним элементом(вершиной стека). Такой порядок
называется "первым вошел, последним вышел".
Реалезуем стек для хранения символьных значений(букв),
с помощью структуры и нескольких функций. Для хранения данных мы
создадим структуру 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;
}
Текст
программы
Запустить
пример
предыдущий
пример
следующий пример
|