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

运行结果:

思维导图

相关推荐
派阿喵搞电子2 小时前
在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新
c++·qt·ubuntu·ui
C++ 老炮儿的技术栈3 小时前
UDP 与 TCP 的区别是什么?
开发语言·c++·windows·算法·visual studio
mochensage4 小时前
CSP信奥赛C++常用系统函数汇总
c++·信奥
mochensage4 小时前
C++信息学竞赛中常用函数的一般用法
java·c++·算法
fpcc4 小时前
跟我学c++中级篇——多线程中的文件处理
c++
5:005 小时前
云备份项目
linux·开发语言·c++
乄夜6 小时前
嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
c语言·c++·单片机·嵌入式硬件·物联网·面试·职场和发展
YYDS3146 小时前
C++动态规划-01背包
开发语言·c++·动态规划
wydaicls7 小时前
十一.C++ 类 -- 面向对象思想
开发语言·c++
姜君竹7 小时前
QT的工程文件.pro文件
开发语言·c++·qt·系统架构