C++day6

将之前定义的栈类和队列类都实现成模板类

栈类

#include 

#define max 32

using namespace std;
template
class Stack
{
private:
    T data[max];
    T top;
public:
    Stack();
    Stack(T t);
    ~Stack();
    Stack(Stack &s);
    bool stack_empty();
    bool stack_full();
    T stack_push(T e);
    T stack_pop();
    T stack_top();
    T stack_size();
    void stack_clear();
};

int main()
{

    Stack s(-1);
    s.stack_push(1);
    s.stack_push(2);
    s.stack_push(3);
    s.stack_push(4);
    s.stack_size();
    s.stack_top();
    s.stack_pop();
    s.stack_pop();
    s.stack_pop();
    s.stack_pop();
    s.stack_size();
    s.stack_top();
    s.stack_clear();
    return 0;
}

template 
Stack::Stack()
{
    cout<<"Stack:无参构造函数"<
Stack::Stack(T t):top(t)
{
    cout<<"Stack:有参构造函数"<
Stack::~Stack()
{
    cout<<"Stack:析构函数"<
Stack::Stack(Stack &s):top(s.top)
{
    for(int i=0;i
bool Stack::stack_empty()
{
    if(-1==top)
        return true;
    else
        return false;
}
template 
bool Stack::stack_full()
{
    if(max-1==top)
        return true;
    else
        return false;
}
template 
T Stack::stack_push(T e)
{
    top++;
    data[top]=e;
    cout<
T Stack::stack_pop()
{
    T e=data[top];
    top--;
    cout<
T Stack::stack_top()
{
    T e=data[top];
    cout<<"栈顶元素为:"<
T Stack::stack_size()
{
    cout<<"栈的大小为:"<
void Stack::stack_clear()
{
    top=-1;
    cout<<"栈已清空"<

队列类

#include 
using namespace std;
#define max 32

template 
class Queue
{
private:
    T data[max];
    T front;
    T tail;
public:
    Queue();
    Queue(T f,T t);
    ~Queue();
    Queue(Queue &q);
    bool queue_empty();
    bool queue_full();
    T queue_push(T e);
    T queue_pop();
    T queue_size();
    void queue_clear();


};
int main()
{
    Queue q(0,0);
    q.queue_push(1);
    q.queue_push(2);
    q.queue_push(3);
    q.queue_push(4);
    q.queue_size();
    q.queue_pop();
    q.queue_pop();
    q.queue_pop();
    q.queue_pop();
    q.queue_size();
    q.queue_clear();
    return 0;
}

template 
Queue::Queue()
{
    cout<<"Queue:无参构造函数"<
Queue::Queue(T f,T t):front(f),tail(t)
{
    cout<<"Queue:有参构造函数"<
Queue::~Queue()
{
    cout<<"Queue:析构函数"<
Queue::Queue(Queue &q):front(q.front),tail(q.tail)
{
    while(front!=tail){
        data[front]=q.data[front];
        front=(front+1)%max;
    }
}
template 
bool Queue::queue_empty()
{
    if(front==tail)
        return true;
    else
        return false;
}
template 
bool Queue::queue_full()
{
    if((tail+1)%max==front)
        return true;
    else
        return false;
}
template 
T Queue::queue_push(T e)
{
    if(Queue::queue_full()){
        cout<<"入队失败"<
T Queue::queue_pop()
{
    if(Queue::queue_empty()){
        cout<<"出队失败"<
T Queue::queue_size()
{
    T size=(tail-front+max)%max;
    cout<<"队长为:"<
void Queue::queue_clear()
{
    front=tail;
    cout<<"清空队列"<

思维导图

C++day6_第1张图片

你可能感兴趣的:(c++,算法,开发语言)