📄 linkedstack.h
字号:
/* $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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -