ВУЗ:
Составители:
Рубрика:
150
Результат выполнения программы:
Дядя Вася!
!ясаВ ядяД
Можно решить эту задачу и так:
char str [ ] = “Дядя Вася!“;
stack s (str, 10);
while (!s.empty ()) cout <<s.pop(); cout <<’\n’;
25.2. Реализация стека через динамическую цепочку
звеньев
Пусть значением указателя, представляющего стек в целом, явля-
ется адрес вершины стека. Как и в случае односвязного списка, каждое
звено будет содержать указатель на следующей элемент, причем «дно»
стека (т.е. элемент, занесенный в стек раньше всех) содержит указатель
NULL.
// Файл stack.cpp
typedef char ETYPE;
struct elem {
ETYPE data;
elem* next;
elem (ETYPE d, elem* n){ data = d; next = n; }
};
class stack {
elem*h; // Адрес вершины стека.
public:
stack () {h = NULL;} // Создание пустого стека.
stack (ETYPE a [ ], int len){ // Инициализация стека массивом.
h = NULL;
for (int i = 0; i< len; i++) h = new elem (a[i], h);
}
stack (stack & a){ // Инициализация стека другим сте-
ком.
elem *p,*q;
p = a.h; q = NULL;
while (p) { q = new elem (p->data, q);
if (q->next = = NULL) h = q;
Страницы
- « первая
- ‹ предыдущая
- …
- 146
- 147
- 148
- 149
- 150
- …
- следующая ›
- последняя »