一、栈的定义
class Stack
{
public:
Stack(int len)
{
this->m_Array = new int[len] {};//初始化的数为0
this->m_Idx = -1;
this->m_Len = len;
}
void Push(int data);
void Pop();
void Print();
~Stack()
{
if (this->m_Array != nullptr)
{
delete[] this->m_Array;
this->m_Array = nullptr;
}
}
private:
int m_Idx;
int* m_Array;
int m_Len;
};
二、进栈
void Stack::Push(int data)
{
if (this->m_Idx == this->m_Len - 1)
{
cout << "栈已满无法插入" << endl;
}
++this->m_Idx;
this->m_Array[this->m_Idx] = data;
}
三、出栈
void Stack::Pop()
{
if (this->m_Idx == -1)
{
cout << "栈为空栈,删除发生错误" << endl;
}
this->m_Array[this->m_Idx] = 0;//这里我是将其变成初始化的值来表示出栈
--this->m_Idx;
}
四、整体展示
#include <iostream>
using namespace std;
class Stack
{
public:
Stack(int len)
{
this->m_Array = new int[len] {};//初始化的数为0
this->m_Idx = -1;
this->m_Len = len;
}
void Push(int data);
void Pop();
void Print();
~Stack()
{
if (this->m_Array != nullptr)
{
delete[] this->m_Array;
this->m_Array = nullptr;
}
}
private:
int m_Idx;
int* m_Array;
int m_Len;
};
void Stack::Push(int data)
{
if (this->m_Idx == this->m_Len - 1)
{
cout << "栈已满无法插入" << endl;
}
++this->m_Idx;
this->m_Array[this->m_Idx] = data;
}
void Stack::Pop()
{
if (this->m_Idx == -1)
{
cout << "栈为空栈,删除发生错误" << endl;
}
this->m_Array[this->m_Idx] = 0;//这里我是将其变成初始化的值来表示出栈
--this->m_Idx;
}
void Stack::Print()
{
for (int i = 0; i <= this->m_Len - 1; ++i)
{
cout << this->m_Array[i] << " ";
}
cout << endl;
}
void Text()
{
Stack s(10);
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
s.Push(5);
s.Push(6);
s.Print();
s.Pop();
s.Print();
}
int main()
{
Text();
system("pause");
return 0;
}