stack
#include <iostream>
using namespace std;
template<typename T>
class stack
{
private:
T *top;
T max;
T len;
public:
//构造函数
stack(){
max=-1;
len=10;
top=new T[len];
}
//析构函数
~stack(){
delete []top;
top=NULL;
}
bool empty()
{
return max==-1;
}
bool full()
{
return max==len-1;
}
void push(const T val)
{
if(this->full())
{
return;
}
*top=val;
top++;
max++;
}
void pop()
{
if(this->empty())
{
return;
}
top--;
cout<<*top<<endl;
max--;
}
int size()
{
return max+1;
}
};
int main()
{
stack<int> v;
v.push(2);
v.push(3);
v.push(9);
cout<<v.size()<<endl;
v.pop();
cout << "Hello World!" << endl;
return 0;
}
queue
#include <iostream>
using namespace std;
template<typename T>
class queue
{
private:
T front;
T tail;
T max;
T *s;
public:
queue()
{
max=10;
s=new T[max];
tail=front=0;
}
bool empty()
{
return tail==front;
}
bool full()
{
return (front+1)%max==front;
}
void push(const T val)
{
if(this->full())
{
return;
}
s[tail]=val;
tail=(tail+1)%max;
}
void pop()
{
if(this->empty())
{
return;
}
cout<<s[front]<<endl;
front=(front+1)%max;
}
int size()
{
return (tail+max-front)%max;
}
int first()
{
return s[front];
}
int back()
{
return s[tail-1];
}
};
int main()
{
queue<int> v;
v.push(8);
v.push(4);
v.push(3);
v.push(4);
v.push(8);
cout<<v.size()<<endl;
v.pop();
v.pop();
cout<<v.first()<<endl;
cout<<v.back()<<endl;
cout << "Hello World!" << endl;
return 0;
}