#include <iostream> using namespace std; #include<string> #include"math.h" template<class T> class vlist//线性表抽象类 { public: virtual void in(T &e)=0; virtual T out()=0; }; template<class T> class Element//线性表存储元素 { public: T data; Element<T> next; Element(){} }; //在beign和end之间完成SStack和Quene类的定义及实现,其继承vlist /begin/ /end***/ int main() { vlist<int> *intp; vlist<string> *strp; SStack<int> ints; Quene<int> intq; SStack<string> strs; Quene<string> strq; intp=&ints; int t=2; intp->in(t); t=3; intp->in(t); t=4; intp->in(t); for(int i=0;i<3;i++) cout<<intp->out(); intp=&intq; t=2; intp->in(t); t=3; intp->in(t); t=4; intp->in(t); for(int i=0;i<3;i++) cout<<intp->out(); strp=&strs; string str; cout<<endl; for(int i=0;i<3;i++) { cin>>str; strp->in(str); } for(int i=0;i<3;i++) cout<<strp->out()<<" "; cout<<endl; strp=&strq; for(int i=0;i<3;i++) { cin>>str; strp->in(str); } for(int i=0;i<3;i++) cout<<strp->out()<<" "; }补充代码
时间: 2023-12-20 16:03:43 浏览: 112
以下是SStack和Quene类的定义及实现:
```
template<class T>
class SStack: public vlist<T>//栈
{
Element<T> *head;
public:
SStack(){head=new Element<T>();}
void in(T &e){Element<T> *p=new Element<T>();p->next=head->next;head->next=p;p->data=e;}
T out(){Element<T> *p=head->next;T e=p->data;head->next=p->next;delete p;return e;}
};
template<class T>
class Quene: public vlist<T>//队列
{
Element<T> *head,*tail;
public:
Quene(){head=tail=new Element<T>();}
void in(T &e){Element<T> *p=new Element<T>();tail->next=p;tail=p;p->data=e;}
T out(){Element<T> *p=head->next;T e=p->data;head->next=p->next;if(!head->next)tail=head;delete p;return e;}
};
```
阅读全文