作业1:用C++方式实现栈
#include<iostream>
#include<string.h>
using namespace std;
#define MAX 5
typedef char datatype;
typedef struct
{
datatype s[MAX];
int top;
}stackList;
class Stack
{
private:
stackList *S;
public:
//创建栈
int create(){
S=new stackList;
if(NULL==S){
cout<<"创建失败"<<endl;
return -1;
}
memset(S,0,sizeof (stackList));
S->top=-1;
return 0;
}
//入栈
int push(datatype n){
if(MAX==S->top+1){
cout<<"栈满,入栈失败"<<endl;
return -1;
}
S->top++;
S->s[S->top]=n;
return 0;
}
//遍历栈
void show(){
for(int i=0;i<=S->top;i++){
cout<<S->s[i]<<" ";
}
cout<<endl;
}
//出栈
int pop(){
if(-1==S->top){
cout<<"栈空,出栈失败"<<endl;
return -1;
}
cout<<S->s[S->top]<<endl;
S->top--;
return 0;
}
//销毁栈
void destory(){
delete S;
cout<<"栈已销毁"<<endl;
}
};
int main()
{
Stack st;
st.create();
st.push('A');
st.push('B');
st.push('C');
st.push('D');
st.push('E');
// st.push('F');
st.show();
st.pop();
st.pop();
st.pop();
st.pop();
st.pop();
// st.pop();
st.destory();
return 0;
}
作业2:用C++实现队列
#include<iostream>
#include<string.h>
using namespace std;
#define MAX 5
typedef char datatype;
typedef struct
{
datatype q[MAX];
int front;
int rear;
}queueList;
class Queue
{
private:
queueList *Q;
public:
//创建队列
int create(){
Q=new queueList;
if(NULL==Q){
cout<<"创建失败"<<endl;
return -1;
}
memset(Q,0,sizeof (queueList));
Q->front=Q->rear=0;
return 0;
}
//入队
int push(datatype n){
if((Q->rear+1)%MAX==Q->front){
cout<<"队列满,入队失败"<<endl;
return -1;
}
Q->q[Q->rear]=n;
Q->rear=(Q->rear+1)%MAX;
return 0;
}
//遍历队列
void show(){
int temp=Q->front;
for(int i=temp;i!=Q->rear;i=(i+1)%MAX){
cout<<Q->q[i];
}
cout<<endl;
}
//出队
int pop(){
if(Q->front==Q->rear){
cout<<"队列空,出队失败"<<endl;
return -1;
}
cout<<Q->q[Q->front]<<endl;
Q->front=(Q->front+1)%MAX;
return 0;
}
//销毁队列
void destory(){
delete Q;
cout<<"队列已销毁"<<endl;
}
};
int main()
{
Queue qu;
qu.create();
qu.push('A');
qu.push('B');
qu.push('C');
qu.push('D');
// qu.push('E');//入队失败
cout<<"遍历队列:"<<endl;
qu.show();
cout<<"出队顺序:"<<endl;
qu.pop();
qu.pop();
qu.pop();
qu.pop();
// qu.pop();//出队失败
qu.destory();
return 0;
}