Queue.cpp
#include <iostream>
#include "Queue.hpp"
using namespace std;int main()
{Queue <int>q;q.push(10);q.push(12);q.push(13);cout<<"q.front = "<<q.front()<<endl;q.pop();cout<<"q.back = "<<q.back()<<endl;q.show();cout<<"q.size = "<<q.get_size()<<endl;Queue<int> q1;q1=q;q1.show();Queue <double>q2;q2.push(1.1);q2.push(2.2);q2.push(3.3);cout<<"q.front = "<<q2.front()<<endl;q2.pop();cout<<"q.back = "<<q2.back()<<endl;q2.show();cout<<"q2.size = "<<q2.get_size()<<endl;Queue<double> q3;q2=q3;q3.show();
// Queue <string>q4;
// q4.push("1.1");
// q4.push("2.2");
// q4.push("3.3");
// cout<<"q.front = "<<q4.front()<<endl;return 0;
}
Queue.hpp
#ifndef QUEUE_HPP
#define QUEUE_HPPtemplate <typename T>
class Queue
{
private:int len;T *data; //容器int size=15; //最大容量public:Queue(){this->len = 0;data = new T [this->size];int i = 0;while (i<this->size) {this->data[i]=0;i++;}}~Queue(){delete []data;}Queue &operator=(const Queue &other){int i =0;if(this!=&other){this->len=other.len;this->size = other.size;while( i<other.len){data[i] = other.data[i];i++;}data[other.len]='\0';}return *this;}void push(T value){if(this->len>=this->size){junzi();}data[this->len++] = value;}void pop(){int i = 0;while(i<this->len){data[i] = data[i+1];i++;}this->len--;}int get_size(){return this->size;}bool empty(){return this->data==nullptr||this->len==0;}T front(){if(empty()){return 0;}else{return data[0];}}T back(){if(empty()){return 0;}else{return data[this->len-1];}}void show(){int i = 0;while(i<this->len){//cout<<data[i]<<" ";i++;}//cout<<endl;}void junzi(){T *temp = new T[this->size*2];int i=0;while(i<this->len){temp[i] = data[i];i++;}delete []data;this->data= temp;//是this->data改变this->size *=2;}};#endif // QUEUE_HPP
Stack.cpp
#include <iostream>
#include"Stack.hpp"
using namespace std;int main()
{my_stack<int> s1;s1.push(10);s1.push(11);cout<<s1.get_size()<<endl;s1.pop();cout<<"top "<<s1.top()<<endl;my_stack<double> s2;s2.push(1.1);s2.push(1.2);cout<<s2.get_size()<<endl;s2.pop();cout<<"top "<<s2.top()<<endl;// my_stack<string> s3;
// s3.push("nihao");
// s3.push("hello");
// cout<<s3.get_size()<<endl;// s3.pop();
// cout<<"top "<<s3.top()<<endl;return 0;
}
Stack.hpp
#ifndef STACK_HPP
#define STACK_HPP
#include<exception>
template <typename T>
class my_stack{
private:int len;int size;T *data;public:my_stack(){data = new T [this->size];this->len=0;this->size=15;}~my_stack(){delete [] data;}my_stack &operator=(const my_stack&other ){if(this!=&other){delete [] data;this->len = other.len;data = new T[size];//深拷贝int i =0;while(i<this->len){data[i]=other.data[i];}}return *this;}T top(){return data[this->len-1];}bool empty(){return this->len ==0;}int get_size(){return this->size;}void push(T value){if(this->len>this->size-1){return ;}data[this->len++]= value;}void pop(){if(empty()){return ;}this->len--;}};#endif // STACK_HPP
思维导图