Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 64 стр.

UptoLike

Составители: 

#include <generic.h>
#define gslist(type) _Paste2_x(type,gslist)
#define gslist_iterator(type) _Paste2_x(type,gslist_iterator)
#define gslistdeclare(type) \
\
struct gslist(type):slist \
{ int insert(type a) \
{ return slist::insert(ent(a));} \
int append(type a) \
{ return slist::append(ent(a));} \
\
type get() \
{ return type(slist::get());} \
gslist(type)(){} \
gslist(type)(type a):slist(ent(a)){} \
~gslist(type)(){slist::clear();} \
\
}; \
\
struct gslist_iterator(type):slist_iterator \
{ gslist_iterator(type)(gslist(type)& s)\
:slist_iterator((slist&)s){} \
type operator()() \
{ return type(slist_iterator:: \
operator()());} \
}; \
typedef char* Pchar;
declare(gslist,Pchar);
gslist(Pchar) spisok;
3.2.3.Стеки и очереди
Наиболее употребительной списочной структурой является
стек.Его элемент имеет одно поле для связи и одно поле дан-
ных.Направления записи и чтения при работе со стеками про-
тивоположны:последний записанный элемент читается первым.Для
64
#include 
#define gslist(type) _Paste2_x(type,gslist)
#define gslist_iterator(type) _Paste2_x(type,gslist_iterator)
#define gslistdeclare(type)                                        \
                                                                   \
              struct gslist(type):slist                            \
                       { int insert(type a)                        \
                                { return slist::insert(ent(a));}   \
                            int append(type a)                     \
                                { return slist::append(ent(a));}   \
                                                                   \
                            type get()                             \
                                { return type(slist::get());}      \
                            gslist(type)(){}                       \
                            gslist(type)(type a):slist(ent(a)){}   \
                            ~gslist(type)(){slist::clear();}       \
                                                                   \
                       };                                          \
                                                                   \
              struct gslist_iterator(type):slist_iterator          \
                       { gslist_iterator(type)(gslist(type)& s)\
                            :slist_iterator((slist&)s){}           \
                            type operator()()                      \
                                 { return type(slist_iterator::    \
                                                 operator()());}   \
                       };                                          \


  typedef char* Pchar;
  declare(gslist,Pchar);
  gslist(Pchar) spisok;


                 3.2.3.Стеки и очереди


  Наиболее употребительной списочной структурой является
стек.Его элемент имеет одно поле для связи и одно поле дан-
ных.Направления записи и чтения при работе со стеками про-
тивоположны:последний записанный элемент читается первым.Для


                                 64