#include <iostream>
using namespace std;
class my_stack
{
private:
int* i;
int size_ = 12;
int length = 0;
public:
//无参构造函数
my_stack()
{
i = new int(size_);
}
//有参构造函数
my_stack(int s):size_(s)
{
i = new int(size_);
}
//析构函数
~my_stack()
{
delete i;
i = NULL;
}
//拷贝赋值函数
my_stack& operator=(my_stack& other)
{
//开辟新空间
i = new int(other.size_);
//复制栈内的元素
for(int k = 0;k < other.length-1;k++)
{
*(i + k) = *(other.i + k);
}
this->size_ = other.size_;
this->length = other.length;
return *this;
}
public:
//向栈顶插入元素
bool push(int n)
{
if(size_ > length)
{
i[length] = n;
length++;
return true;
}
return false;
}
//删除栈顶元素
bool pop()
{
if(empty())
{
return false;
}
length--;
return true;
}
//判空
bool empty()
{
return !length;
}
//返回元素数
int size()
{
return size_;
}
//访问栈顶元素
int top()
{
return i[length];
}
};
class my_queue
{
private:
int* front_;
int* back_;
int size_ = 12;
int length = 0;
public:
my_queue()
{
front_ = new int(size_);
back_ = front_;
}
my_queue(int s):size_(s)
{
front_ = new int(size_);
back_ = front_;
}
~my_queue()
{
delete front_;
delete back_;
front_ = NULL;
back_ = NULL;
}
my_queue& operator=(my_queue& other)
{
//申请新空间
front_ = new int(size_);
//复制栈内的元素
for(int i = 0;i < other.length-1;i++)
{
*(front_ + i) = *(other.front_ + i);
}
this->length = other.length;
this->back_ = front_ + other.length;
this->size_ = other.size_;
return *this;
}
public:
bool push(int n)
{
if(size_ > length)
{
*back_ = n;
back_ = back_ + 1;
length++;
return true;
}
return false;
}
bool pop()
{
if(empty())
{
return false;
}
back_ = back_ - 1;
length--;
return true;
}
bool empty()
{
return !length;
}
int size()
{
return length;
}
int& front()
{
return *front_;
}
int& back()
{
return *back_;
}
};
int main()
{
cout << "Hello World!" << endl;
return 0;
}
C++ 手动实现 栈和队列(部分)
最新推荐文章于 2024-10-07 19:01:55 发布