栈的实现(栈的基础操作)

来源:互联网 发布:网络协议的四层模型 编辑:程序博客网 时间:2024/05/01 03:57

问题描述:

       面试或笔试时,常常会遇到自主实现一个栈,以实现进出栈,判空和满等的相关操作,虽然实现难度较为简单,但却也算得上一个热门题型,主要考察学生有效时间内对于简单栈的设计是否考虑周全以及成员函数的实现以及参数和函数返回值等细节问题。


#include<iostream>using namespace std;const int Max_size = 100;class Stack{public:Stack();//构造函数~Stack();//析构函数(可省略,系统自动调用默认析构函数)void Push(const int a);//入栈操作int Pop();//出栈操作bool IsEmpty()const;//判空操作(const修饰成员列表,表示修饰的成员对象不能更改其值)bool IsFull()const;//判满操作void Clear();//清空操作void Display();//打印该栈private:int arr[Max_size];//存放元素值(成员变量值)int Top;//栈顶指针};Stack::Stack(){Top = -1;}Stack::~Stack(void){}void Stack::Push(const int a){if (Top == Max_size - 1){cout << "The Stack is full!" << endl;return;}Top++;arr[Top] = a;}int Stack::Pop(){if (Top == -1){cout << "The Stack is Empty!" << endl;return 0;}int tmp = arr[Top];Top--;return tmp;}bool Stack::IsEmpty()const{if (Top == -1){return true;}elsereturn false;}bool Stack::IsFull()const{if (Top == Max_size - 1){return true;}elsereturn false;}void Stack::Clear(){Top = -1;}void Stack::Display(){for (int i = 0; i <= Top; i++){cout << arr[i] << " ";}cout << endl;}//测试用例void Test(){Stack sp[5];sp[0].Push(1);sp[1].Push(2);sp[2].Push(3);sp[3].Push(4);sp[4].Push(5);sp[0].Display();sp[1].Display();sp[2].Display();sp[3].Display();sp[4].Display();//sp[4].Pop();//sp[4].Display();}//主函数int main(){Test();return 0;}



注:自主实现简单的栈,有助于深入理解栈的构造以及特性,也是进一步学习相关栈的复杂操作的重要基础,在自主实现后使用库函数的栈才更加得心应手。
0 0
原创粉丝点击