04/24课后作业(C++)

1.手动实现顺序栈,要求实现数据结构中,所有栈的相关操作

#include <iostream>
#define MAXSIZE 16

using namespace std;

template <typename T>
class Stack{
private:
    T data[MAXSIZE];         //数据元素

public:
    int top;        //栈顶

public:
    Stack() {
        top = -1;
    }
    //入栈
    bool push_Stack(T d) {
        if(top == MAXSIZE-1)
            return false;
        else{
            top++;
            this->data[top] = d;
            return true;
        }
    }
    //出栈
    bool pop_Stack() {
        if(top == -1)
            return false;
        else{
            cout << this->data[top] << endl;
            top--;
            return true;
        }
    }
    //遍历
    bool output_Stack(){
        if(top == -1)
            return false;
        else{
            cout << "------------------------" << endl;
            for(int i=0;i<=top;i++)
            {
                cout << data[i] << "  ";
            }
            cout << endl;
            cout << "------------------------" << endl;
            return true;
        }
    }
    //析构
    ~Stack() {
        top = -1;
        cout << "析构函数" << endl;
    }

};



int main()
{
    Stack<double> s;
    cout << "------------------------" << endl;
    cout << "-------1.栈的插入--------" << endl;
    cout << "-------2.栈的删除--------" << endl;
    cout << "-------3.栈的遍历--------" << endl;
    cout << "-------0.退出程序--------" << endl;
    cout << "------------------------" << endl;
    while(1)
    {
        int c;
        cout << "请输入您的选择>>> ";
        cin >> c;
        switch(c)
        {
            case 1:{
                double data;
                cout << "   请输入入栈的值>>> ";
                cin >> data;
                s.push_Stack(data);
            }break;
            case 2:{
                s.pop_Stack();
            }break;
            case 3:{
                s.output_Stack();
            }break;
            case 0:return 0;
            default:{
                cout << "输入错误,请重新输入" << endl;
            }break;
        }
    }

    return 0;
}

2.手动实现循环顺序队列,要求实现数据结构中,所有队列的相关操作

#include <iostream>
#define MAXSIZE 8

using namespace std;

template <typename T>
class Queue{
private:
    T data[MAXSIZE];         //数据元素

public:
    //队头:第一个元素下标
    int front;
    //队尾:最后一个元素后面的下标
    int rear;

public:
    Queue() {
        front = 0;
        rear = 0;
    }
    //入队
    bool en_Queue(T d) {
        if(front == (rear+1)%MAXSIZE){
            cout << "队满" << endl;
            return false;
        }
        else{
            this->data[rear] = d;
            rear = (rear+1)%MAXSIZE;
            return true;
        }
    }
    //出队
    bool de_Queue() {
        if(rear == front){
            cout << "队空" << endl;
            return false;
        }
        else{
            cout << this->data[front] << endl;
            front = (front+1)%MAXSIZE;
            return true;
        }
    }
    //遍历
    bool output_Queue() {
        if(rear == front)
            return false;
        else{
            cout << "------------------------" << endl;
            for(int i=front;i!=rear;i=(i+1)%MAXSIZE)
            {
                cout << data[i] << "  ";
            }
            cout << endl;
            cout << "------------------------" << endl;
            return true;
        }
    }
    //析构
    ~Queue() {
        front = 0;
        rear = 0;
        cout << "析构函数" << endl;
    }

};
int main()
{
    Queue<double> q;
    cout << "---------------------------" << endl;
    cout << "-------1.顺序队列入队-------" << endl;
    cout << "-------2.顺序队列删除-------" << endl;
    cout << "-------3.顺序队列遍历-------" << endl;
    cout << "-------0.退出程序-----------" << endl;
    cout << "---------------------------" << endl;
    while(1)
    {
        int c;
        cout << "请输入您的选择>>> ";
        cin >> c;
        switch(c)
        {
            case 1:{
                double data;
                cout << "   请输入入队的值>>> ";
                cin >> data;
                q.en_Queue(data);
            }break;
            case 2:{
                q.de_Queue();
            }break;
            case 3:{
                q.output_Queue();
            }break;
            case 0:return 0;
            default:{
                cout << "输入错误,请重新输入" << endl;
            }break;
        }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值