1、栈
头文件
#ifndef ZHAN_H
#define ZHAN_H#define MAX 8
#include <iostream>
using namespace std;class Shu
{int datatype; //入栈的数据int *arr; //栈的数组int top; //记录栈顶元素的下标public://构造函数Shu();//析构函数~Shu();//判断空int stack_empty();//判断满int stack_full();//入栈int stack_push(int data);//遍历栈void stack_show();//出栈int stack_pop();//获取栈顶元素int stack_top();//求栈的大小int stack_size();//清空栈void stack_free();};void xitong();#endif // ZHAN_H
源文件
#include "zhan.h"Shu::Shu()
{datatype=0;arr = new int[MAX];top=-1;
}Shu::~Shu()
{delete arr;arr=nullptr;
}//判断空
int Shu::stack_empty()
{if(NULL==arr){cout<<"判空失败"<<endl;return -1;}return this->top==-1;}//判断满
int Shu::stack_full()
{if(NULL==arr){cout<<"判满失败"<<endl;return -1;}return this->top==MAX-1;
}//入栈
int Shu::stack_push(int data)
{datatype=data;if(stack_full()){cout<<"入栈失败"<<endl;return -1;}//top下标自增this->top++;//将输入的函数放入数组中arr[this->top]=datatype;cout<<"入栈成功"<<endl;return 0;
}//遍历栈
void Shu::stack_show()
{if(stack_empty()){cout<<"遍历失败"<<endl;return ;}//遍历for(int i=0;i<this->top+1;i++){cout<<arr[i]<<" ";}cout<<endl;
}//出栈
int Shu::stack_pop()
{if(stack_empty()){cout<<"出栈失败"<<endl;return -1;}//出栈cout<<arr[this->top]<<"出栈成功"<<endl;//自减this->top--;return 0;
}//获取栈顶元素
int Shu::stack_top()
{if(stack_empty()){cout<<"获取栈顶元素失败"<<endl;return -1;}//获取栈顶元素cout<<"栈顶元素为:"<<arr[top]<<endl;return 0;
}//求栈的大小
int Shu::stack_size()
{if(stack_empty()){cout<<"求栈大小失败"<<endl;return -1;}//栈的大小int size=this->top+1;cout<<"栈的大小为:"<<size<<endl;return 0;
}//清空栈
void Shu::stack_free()
{this->top=-1;cout<<"清空栈成功"<<endl;
}//系统函数
void xitong()
{//定义一个Shu类型的变量名Shu zhan;while(1){END:system("CLS");cout<<"**********************"<<endl;cout<<"********1、入栈********"<<endl;cout<<"********2、遍历********"<<endl;cout<<"********3、出栈********"<<endl;cout<<"********4、栈顶元素*****"<<endl;cout<<"********5、栈的大小*****"<<endl;cout<<"********0、退出********"<<endl;cout<<"**********************"<<endl;int num;int data;cout<<"请输入对应的功能:";cin>>num;switch(num){case 1:cout<<"请输入要加入的数:";cin>>data;zhan.stack_push(data);break;case 2:zhan.stack_show();break;case 3:zhan.stack_pop();break;case 4:zhan.stack_top();break;case 5:zhan.stack_size();break;case 0:goto ENDL;}int qp;cout<<"输入清屏(7):";cin>>qp;if(qp==7){goto END;}}ENDL:cout<<"系统退出成功"<<endl;zhan.stack_free();}
主函数
#include <iostream>
#include "zhan.h"using namespace std;int main()
{xitong();return 0;
}
2、循环队列
头文件
#ifndef DUILIE_H
#define DUILIE_H#define MAX 8
#include <iostream>
using namespace std;class Shu
{int datatype; //入队的数据int *arr; //循环队列的数组int head; //记录队列头元素的下标int tail; //记录队列尾元素下标public://构造函数Shu();//析构函数~Shu();//判断空int queue_empty();//判断满int queue_full();//入队int queue_push(int data);//遍历队void queue_show();//出队int queue_pop();//求队列的大小int queue_size();//清空队void queue_free();};//系统函数
void xitong();#endif // DUILIE_H
源文件
#include "duilie.h"Shu::Shu()
{datatype=0;arr = new int[MAX];head=0;tail=0;
}Shu::~Shu()
{delete arr;arr=nullptr;
}//判断空
int Shu::queue_empty()
{if(NULL==arr){cout<<"判空失败"<<endl;return -1;}return this->head==this->tail;}//判断满
int Shu::queue_full()
{if(NULL==arr){cout<<"判满失败"<<endl;return -1;}return (this->tail+1)%MAX==this->head;
}//入队
int Shu::queue_push(int data)
{datatype=data;if(queue_full()){cout<<"入队失败"<<endl;return -1;}//将输入的函数放入数组中arr[this->tail]=datatype;//尾下标自增this->tail=(this->tail+1)%MAX;cout<<"入队成功"<<endl;return 0;
}//遍历栈
void Shu::queue_show()
{if(queue_empty()){cout<<"遍历失败"<<endl;return ;}//遍历for(int i=this->head;i!=this->tail;i=(i+1)%MAX){cout<<arr[i]<<" ";}cout<<endl;
}//出队
int Shu::queue_pop()
{if(queue_empty()){cout<<"出队失败"<<endl;return -1;}//出队cout<<arr[this->head]<<"出队成功"<<endl;//自增this->head=(this->tail+1)%MAX;return 0;
}//求队列的大小
int Shu::queue_size()
{if(queue_empty()){cout<<"求队列大小失败"<<endl;return -1;}//栈的大小int size=(this->tail+MAX-this->head)%MAX;cout<<"队列的大小为:"<<size<<endl;return 0;
}//清空栈
void Shu::queue_free()
{this->head=0;this->tail=0;cout<<"清空队列成功"<<endl;
}//系统函数
void xitong()
{//定义一个Shu类型的变量名Shu zhan;while(1){END:system("CLS");cout<<"**********************"<<endl;cout<<"********1、入队********"<<endl;cout<<"********2、遍历********"<<endl;cout<<"********3、出队********"<<endl;cout<<"********4、队列的大小***"<<endl;cout<<"********0、退出********"<<endl;cout<<"**********************"<<endl;int num;int data;cout<<"请输入对应的功能:";cin>>num;switch(num){case 1:cout<<"请输入要加入的数:";cin>>data;zhan.queue_push(data);break;case 2:zhan.queue_show();break;case 3:zhan.queue_pop();break;case 4:zhan.queue_size();break;case 0:goto ENDL;}int qp;cout<<"输入清屏(7):";cin>>qp;if(qp==7){goto END;}}ENDL:cout<<"系统退出成功"<<endl;zhan.queue_free();}
主函数
#include <iostream>
#include "duilie.h"using namespace std;int main()
{xitong();return 0;
}
3、思维导图