1、
自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量,成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小
stack.h
#ifndef STACK_H
#define STACK_H#include<iostream>using namespace std;class Stack
{private:int data[128];int top;
public:Stack();~Stack();Stack(Stack &s);//判空bool stack_empty();//返回bool类型,真为空,假为非空//判满bool stack_full();//入栈int stack_in(int num);//出栈int stack_out();//清空栈bool stack_clear();//获取栈顶元素int stack_get_top();//栈的大小int stack_size();//遍历void stack_show();};#endif // STACK_H
stack.cpp
#include"stack.h"Stack::Stack():top(-1)
{cout<<"Stack:构造函数"<<endl;
}Stack::~Stack()
{cout<<"Stack:析构函数"<<endl;
}Stack::Stack(Stack &s):top(s.top)
{for(int i=0; i<=top; i++){data[i] = s.data[i];}cout<<"Stack:拷贝构造函数"<<endl;
}//判空bool Stack::stack_empty(){return -1==top;}//判满bool Stack::stack_full(){return 127==top;}//入栈int Stack::stack_in(int num){if(Stack::stack_full()){cout<<"栈满满当当"<<endl;return -1;}//指向新的栈顶top++;//将要入栈的数据放入数组中data[top] = num;return 0;}//出栈int Stack::stack_out(){if(Stack::stack_empty()){cout<<"栈空空如也"<<endl;return -1;}return data[top--];}//清空栈bool Stack::stack_clear(){if(Stack::stack_empty()){cout<<"栈空空如也"<<endl;return false;}//清空后栈顶归位top = -1;return true;}//获取栈顶元素int Stack::stack_get_top(){if(Stack::stack_empty()){cout<<"栈空空如也"<<endl;return -1;}return data[top];}//求栈的长度int Stack::stack_size(){return top+1;}//从栈顶到栈底遍历void Stack::stack_show(){if(Stack::stack_empty()){cout<<"栈空空如也"<<endl;return ;}for(int i=top; i>-1; i--){cout << data[i] << " ";}cout<<endl;}
main.cpp
#include <iostream>#include"stack.h"using namespace std;int main()
{Stack s;//入栈s.stack_in(3);s.stack_in(4);s.stack_in(8);s.stack_in(6);s.stack_in(5);//展示栈内元素cout<<"s:";s.stack_show();cout<<s.stack_out()<<"出栈成功"<<endl;//展示栈内元素cout<<"s:";s.stack_show();//获取栈的大小cout<<"此时栈内元素的数量为:"<<s.stack_size()<<endl;//栈顶元素为cout<<"栈顶元素为:"<<s.stack_get_top()<<endl;//清空栈s.stack_clear();cout<<"栈清空成功"<<endl;//展示栈内元素cout<<"s:";s.stack_show();return 0;
}
测试
2、
自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置
成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小
3、思维导图