c++day3---9.8

1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量

成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

头文件:

#ifndef Z_H
#define Z_H
#include 

using namespace std;

class Zhan
{
private:
    int *zhan;//存放栈中的数据
    int N;//栈空间
    int top;//栈顶

public:
    //构造函数设置空间为10
    Zhan();

    //析构函数
    ~Zhan();

    //清空栈
    void clear();

    //是否栈空
    int empty();

    //是否栈满
    int full();

    //获取栈顶元素
    void top_data();

    //进栈
    void into();

    //出栈
    int out();

    //栈的大小
    void len();

    void show();
};

void choose();

#endif // Z_H

功能函数文件:

#include"z.h"
Zhan::Zhan()
{
    N=10;
    zhan=new int[N];//分配栈空间
    this->top=-1;//初始化栈顶
}

//析构函数
Zhan::~Zhan()
{
    delete zhan;
}

//清空栈
void Zhan::clear()
{
    this->top=-1;
    cout<<"清空成功"<top==-1)?1:0;
}

//是否栈满
int Zhan::full()
{
    return (this->top==N-1)?1:0;
}

//获取栈顶元素
void Zhan::top_data()
{
    if(empty())
        return;
    else
    {
        int a=0;
        a=this->top;
        cout<<"栈顶元素为:"<>x;
        while(getchar()!=10);
        zhan[++(this->top)]=x;
        cout<top)--];
}

//栈的大小
void Zhan::len()
{
    int a=top;
    a+=1;
    cout<<"现在栈的大小为:"<top;
    for(int i=0;i<=a;i++)
    {
        cout<>i;
        while(getchar()!=10);
        switch(i)
        {
            case 1:
                z.into();
                break;
            case 2:
                z.out();
                break;
            case 3:
                z.clear();
                break;
            case 4:
                z.top_data();
                break;
            case 5:
                z.len();
                break;
            case 6:
                return;
                break;
            default:
                cout<<"输入错误,请重新输入"<

测试文件:

#include"z.h"
int main()
{
    choose();
    return 0;
}

2> 自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置

成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小

头文件:

#ifndef DL_H
#define DL_H
#include 

using namespace std;

class Duilie
{
private:
    int *duilie;//存放栈中的数据
    int N;//队列空间
    int top;//队列头
    int tail;//队列尾

public:
    //构造函数设置空间为10
    Duilie();

    //析构函数
    ~Duilie();

    //清空队列
    void clear();

    //是否队列空
    int empty();

    //是否队列满
    int full();

    //进队列
    void into();

    //出队列
    int out();

    //队列的大小
    void len();

    void show();
};

void choose();
#endif // DL_H

功能函数文件:

#include"dl.h"
Duilie::Duilie()
{
    N=10;
    duilie=new int[N];//分配队列空间
    this->top=0;//初始化队列头尾
    this->tail=0;
}

//析构函数
Duilie::~Duilie()
{
    delete duilie;
}

//清空队列
void Duilie::clear()
{
    for(int i=this->top;i!=this->tail;i=(i+1)%N)
    {
        duilie[i]=0;
    }
    this->tail=this->top=0;
    cout<<"清空成功"<top==this->tail)?1:0;
}

//是否队列满
int Duilie::full()
{
    int a=this->tail;
    return ((a+1)%N==this->top)?1:0;
}

//进队列
void Duilie::into()
{

    if(full())
        return;
    else
    {
        int x;
        int a=this->tail;
        cout<<"请输入入队列的元素:";
        cin>>x;
        while(getchar()!=10);
        duilie[a]=x;
        this->tail=(this->tail+1)%N;
        cout<top]<<"出队列成功"<top=(this->top+1)%N;
        return 1;
    }
}

//队列的大小
void Duilie::len()
{
    int a=0;
    a=(this->tail+N-this->top)%N;
    cout<<"现在队列的大小为:"<top,b=this->tail;
    cout<<"现在队列从头到尾元素为:";
    for(int i=a;i!=b;i=(i+1)%N)
    {
        cout<>i;
        while(getchar()!=10);
        switch(i)
        {
            case 1:
                d.into();
                break;
            case 2:
                d.out();
                break;
            case 3:
                d.clear();
                break;
            case 4:
                d.len();
                break;
            case 5:
                return;
                break;
            default:
                cout<<"输入错误,请重新输入"<

测试文件:

#include"dl.h"
int main()
{
    choose();
    return 0;
}

3>思维导图:

你可能感兴趣的:(c++,java,算法)