linkedstack.h
来自「用于词法分析的词法分析器」· C头文件 代码 · 共 64 行
H
64 行
/* $Id: LinkedStack.h,v 1.2 1997/02/02 01:31:04 matt Exp $ Linked list stack. (c) Apr 17 1994 Matt Phillips. */#ifndef _LSTACK_H#define _LSTACK_H#include "Stack.h"#include "LinkedList.h"template <class T, class E>class LinkedStackImp : public Stack<T>, protected LinkedListImp<T, E>{public: typedef LinkedStackImpIter<T, E> Iterator; const char *name () const {return Stack<T>::name ();} int nItems () const {return LinkedListImp<T, E>::nItems ();} int isFull () const {return LinkedListImp<T, E>::isFull ();} int isEmpty () const {return LinkedListImp<T, E>::isEmpty ();} void clear () {LinkedListImp<T, E>::clear ();} virtual void push (T &i) {STACK_OVERFLOW (!isFull ()); add (i);} virtual void pop () { STACK_UNDERFLOW (!isEmpty ()); E *next = head->next; delete head; head = next; _nItems--; } virtual T &top () const { STACK_UNDERFLOW (!isEmpty ()); return head->ref (); } Iterator *makeIter () const {return new Iterator (*this);} friend class Iterator;};template <class T, class E>class LinkedStackImpIter : public LinkedListImpIter<T, E>{public: LinkedStackImpIter (const LinkedStackImp<T, E> &s) : LinkedListImpIter<T, E> (s) {}};#define TypeDLinkedStack(T) LinkedStackImp<T, DLinkedItem<T> >#define TypeILinkedStack(T) LinkedStackImp<T, ILinkedItem<T, 0> >#define TypeIOLinkedStack(T) LinkedStackImp<T, ILinkedItem<T, 1> >#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?