9.13 C++作业

队列

#include 
#define N 10

using namespace std;

template 
class Queue
{
private:
    T *data;   //数组容器
    int head;     //队头元素下标
    int tail;      //队尾元素下标的下一位

public:
    //构造函数
    template 
    Queue::Queue():data(new T[N]), head(0), tail(0)
    {
        cout<<"无参构造函数"<
    Queue::~Queue()
    {
        dalete []data;
        cout<<"析构函数"<
    Queue::Queue(const & Queue):data(new T[N]),head(other.head),tail(other.tail)
    {
        int i = head;
        while(i!=tail)
        {
            data[i] = s.data[i];
            i = (i+1)%N;
        }
        cout<<"Queue:拷贝构造函数"<
    bool Queue::empty_queue()
    {
        if(head == tail)
        {
            return 1;
        }
        return 0;
    }

    //判满
    template 
    bool Queue::full_queue()
    {
        if((tail+1)%N == head)
        {
            return 1;
        }
        return 0;
    }

    //入队
    template 
    int Queue::input_queue(T n)
    {
        if(full_queue())
        {
            cout<<"队满,入队失败"<
    int Queue::output_queue()
    {
        if(empty_queue())
        {
            cout<<"队空,出队失败"<
    int Queue::delete_queue()
    {
        if(empty_queue())
        {
            cout<<"队空,无需清空"<
    void Queue::size_queue()
    {
        cout<<"队列大小为"<<(tail+N-head)%N<
    int Queue::show_queue()
    {
        if(empty_queue())
        {
            cout<<"队空,遍历失败"< q;
    q.input_queue(9);   //入队
    q.input_queue(8);
    q.input_queue(7);
    q.input_queue(6);
    q.input_queue(5);
    q.show_queue();      //遍历队列

    q.output_queue();    //出队
    q.show_queue();      //遍历队列
    q.size_queue();      //队列大小
    q.delete_queue();    //清空队列
    q.show_queue();
    return 0;
}

#include 
#define SIZE 10

using namespace std;


//定义一个模板函数
template
class Stack
{
private:
    T *data;      //栈的数组
    int top;       //栈顶变量

public:
    //构造函数
    Stack::Stack()
    {
        data = new T[SIZE];
        this->top = -1;
    }


    //析构函数
    Stack::~Stack()
    {
        delete []data;
        cout<<"析构函数"<::Stack::empty_stack()
    {
        if(-1 == top)
        {
            cout<<"栈为空!"<::full_stack()
    {
        if(SIZE == top)
        {
            cout<<"栈已满!"<::input_stack(T a)
    {
        if(full_stack())     //判满操作
        {
            cout<<"栈满,入栈失败"<::output_stack()
    {
        if(empty_stack())    //判空操作
        {
            cout<<"栈空,出栈失败"<::head_stack()
    {
        cout<<"栈顶元素为"<::delete_stack()
    {
        empty_stack();
        top=-1;
        cout<<"栈已清空"<::size_stack()
    {
       cout<<"栈的大小为"<::(Stack &s1):top(T s1.top)
    {
        for(int i=0; i<=top; i++){
            data[i] = s1.data[i];
        }
        cout<<"Stack:拷贝构造函数"<::show_stack()
    {
        full_stack();
        for(int i=top; i>=0; i--)
        {
            cout< s;
    s.input_stack(8);    //入栈
    s.input_stack(7);
    s.input_stack(6);
    s.input_stack(5);
    s.input_stack(4);
    s.show_stack();      //遍历栈

    s.output_stack();    //出栈
    s.show_stack();

    s.size_stack();      //栈的大小
    s.head_stack();      //栈顶元素
    s.delete_stack();    //清空栈
    s.show_stack();


    return 0;
}

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