(C++)8月30日作业

作业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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值