23062C++&QTday3

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

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

头文件stack.c

cpp 复制代码
#ifndef STACK_H
#define STACK_H
#include <iostream>
#include <cstring>

using namespace std;
class stack
{
private:
    int data[128];
    int top;
public:
    //构造函数
    stack();
    //析构函数
    ~stack();
    //拷贝构造函数
    stack(const stack &other);
    //入栈
    int stack_push(int e);
    //出栈
    int stack_pop();
    //清空栈
    void stack_clear();
    //判空
    bool stack_empty();
    //判满
    bool stack_full();
    //获取栈顶元素
    int &stack_top();
    //求栈的大小
    int stack_size();
};
#endif // STACK_H

源文件:

cpp 复制代码
#include"stack.h"
//构造函数
stack::stack()
{
    cout<<"构造函数"<<endl;
}
//析构函数
stack::~stack()
{
    delete[] data;
    cout<<"析构函数"<<endl;
}
//拷贝构造函数
stack::stack(const stack &other)
{
   
    cout<<"拷贝构造函数"<<endl;
}
//入栈
int stack::stack_push(int e)
{
    top++;
    data[top]=e;
    cout<<"入栈成功"<<endl;
    return 0;
}
//出栈
int stack::stack_pop()
{
    top--;
    cout<<"出栈成功"<<endl;
    return 0;
}
//清空栈
void stack::stack_clear()
{
    top=-1;
    return;
}
//判空
bool stack::stack_empty()
{
    return top==-1;
}
//判满
bool stack::stack_full()
{
    return top==127;
}
//获取栈顶元素
int & stack::stack_top()
{
    return data[top];
}
//求栈的大小
int stack::stack_size()
{
    return top+1;
}

测试文件:

cpp 复制代码
#include"stack.h"

int main()
{
    stack s1;
    s1.stack_push(1);
    s1.stack_push(2);
    s1.stack_pop();
    cout << "s1.data[top]="<<s1.stack_top()<< endl;
    return 0;
}

运行结果:

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

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

头文件:

cpp 复制代码
#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>
using namespace std;

class queue
{
private:
  int data[128];
  int front=0;
  int tail=0;
public:
  //构造函数
  queue();
  //析构函数
  ~queue();
  //拷贝构造函数
  queue(const queue &other );
  //入队
  int queue_push(int e);
  //出队
  int queue_pop();
  //清空队列
  void queue_delete();
  //判空
  bool queue_empty();
  //判满
  bool queue_full();
  //求队列的大小
  int queue_size();
  //遍历
  void queue_show();
};

#endif // QUEUE_H

源文件:

cpp 复制代码
#include"queue.h"

//构造函数
queue::queue()
{
    cout<<"构造函数"<<endl;
}
//析构函数
queue::~queue()
{
    delete[] data;
    cout<<"析构函数"<<endl;
}
//拷贝构造函数
queue::queue(const queue &other )
{
    int index=front;
    while(index!=tail)
    {
        data[index]=other.data[index];
        index=(index+1)%128;
    }
    cout<<"拷贝构造函数"<<endl;
}
//入队
int queue:: queue_push(int e)
{
    if(queue_full())
    {
        return -1;
    }
    data[tail]=e;
    tail=(tail+1)%128;
    return 0;

}
//出队
int queue::queue_pop()
{
    if(queue_empty())
    {
        return -1;
    }
    front=(front+1)%128;
    return 0;
}
//清空队列
void queue::queue_delete()
{
    tail=front=0;
}
//判空
bool queue::queue_empty()
{
    return front==tail;
}
//判满
bool queue::queue_full()
{
    return (tail+1)%128==front;
}
//求队列的大小
int queue::queue_size()
{
    return (tail-front+128)%128;
}

//遍历
void queue::queue_show()
{
    for(int i=front;i!=tail;i=(i+1)%128)
    {
        cout<<data[i]<<" ";
    }
}

测试文件:

cpp 复制代码
#include"queue.h"

int main()
{
    queue q1;
    q1.queue_push(520);
    q1.queue_push(1314);
    q1.queue_pop();
    cout<<"q1的大小为"<<q1.queue_size()<<endl;
    q1.queue_show();
    return 0;
}

运行结果:

思维导图

相关推荐
小刘同学3211 小时前
C++11 特性
c++·c11新特性
真的想上岸啊2 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
m0_552200822 小时前
《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
c++·游戏·ue5
丁劲犇2 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse
charlie1145141913 小时前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
呜喵王阿尔萨斯3 小时前
编程中的英语
c语言·c++
whoarethenext4 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss
向阳@向远方5 小时前
第二章 简单程序设计
开发语言·c++·算法
Mr_Xuhhh6 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构