目录
源代码:
输出结果如下:
实现以下封装
源代码:
#include <iostream>using namespace std;class Queue
{
private:int* arr; // 队列的动态数组int front; // 队列头部元素的索引int rear; // 队列尾部元素的索引int capacity; // 队列的最大容量public://有参构造函数Queue(int size):front(0),rear(0),capacity(size){arr = new int[capacity];cout<<"有参构造函数"<<endl;}//析构函数~Queue(){delete[] arr;cout<<"析构函数"<<endl;}//赋值给容器适配器Queue &operator=(const Queue &brr);//访问第一个元素int _front();//访问最后一个元素int _back();//队列判空bool _empty();//返回容纳的元素数int _size();//向队尾插入元素void _push(int value);//删除首个元素void _pop();
};Queue &Queue::operator=(const Queue &brr)
{if(this != &brr){delete [] arr; //释放掉原先队列中的内存front = brr.front;rear = brr.rear;capacity = brr.capacity;arr = new int[capacity];for(int i = 0; i < rear; i++){arr[i] = brr.arr[i];}}return *this;cout<<"拷贝成功"<<endl;
}int Queue::_front()
{return arr[front];
}int Queue::_back()
{if(_empty()){cout<<"队列为空"<<endl;return -1;}return arr[rear-1];
}bool Queue::_empty()
{return front == rear;
}int Queue::_size()
{return rear - front;
}void Queue::_push(int value)
{arr[rear++] = value;cout<<value<<"尾插成功"<<endl;
}void Queue::_pop()
{if(_empty()){cout<<"队列为空"<<endl;return ;}cout<<"首个元素"<<arr[front++]<<"删除成功\n"<<endl;
}int main()
{Queue q1(10); //分配了10个内存空间q1._push(5); //尾插5q1._push(2); //尾插2q1._push(0); //尾插0cout<<"最后一个元素是:"<<q1._back()<<endl; //访问最后一个元素q1._pop(); //删除首个元素5q1._pop(); //再次删除首个元素,这里就是2了cout<<"此时第一个元素是:"<<q1._front()<<endl; //访问首个元素,就是0了return 0;
}