C++ day 3

news2025/1/17 6:11:31

1、

自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量,成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

stack.h

#ifndef STACK_H
#define STACK_H

#include<iostream>

using namespace std;


class Stack
{

private:
    int data[128];
    int top;
public:
    Stack();
    ~Stack();
    Stack(Stack &s);

    //判空
    bool stack_empty();
    //返回bool类型,真为空,假为非空
    //判满
    bool stack_full();

    //入栈
    int stack_in(int num);

    //出栈
    int stack_out();

    //清空栈
    bool stack_clear();

    //获取栈顶元素

   int stack_get_top();

   //栈的大小

   int stack_size();

    //遍历
   void stack_show();


};


#endif // STACK_H

stack.cpp

#include"stack.h"



Stack::Stack():top(-1)
{
    cout<<"Stack:构造函数"<<endl;
}

Stack::~Stack()
{
    cout<<"Stack:析构函数"<<endl;
}

Stack::Stack(Stack &s):top(s.top)
{
    for(int i=0; i<=top; i++)
    {
        data[i] = s.data[i];
    }
    cout<<"Stack:拷贝构造函数"<<endl;
}

//判空

 bool Stack::stack_empty()
 {
     return -1==top;
 }

 //判满

  bool Stack::stack_full()
  {
      return 127==top;
  }

  //入栈

  int Stack::stack_in(int num)
  {
      if(Stack::stack_full())
      {
          cout<<"栈满满当当"<<endl;
          return -1;
      }
      //指向新的栈顶
      top++;
       //将要入栈的数据放入数组中

      data[top] = num;
      return 0;
  }

  //出栈
  int Stack::stack_out()
  {
      if(Stack::stack_empty())
      {
          cout<<"栈空空如也"<<endl;
          return -1;
      }

      return  data[top--];
    }

  //清空栈
  bool Stack::stack_clear()
  {
      if(Stack::stack_empty())
      {
          cout<<"栈空空如也"<<endl;
          return false;
       }

      //清空后栈顶归位
      top = -1;
      return true;
  }

  //获取栈顶元素
  int Stack::stack_get_top()
  {
      if(Stack::stack_empty())
      {
          cout<<"栈空空如也"<<endl;
          return -1;
      }
      return data[top];
  }

  //求栈的长度
  int Stack::stack_size()
  {
      return top+1;
  }

  //从栈顶到栈底遍历
  void Stack::stack_show()
  {
      if(Stack::stack_empty())
      {
          cout<<"栈空空如也"<<endl;
          return ;
      }
      for(int i=top; i>-1; i--)
      {
          cout << data[i] << " ";
      }
      cout<<endl;
  }

main.cpp

#include <iostream>

#include"stack.h"

using namespace std;

int main()
{
    Stack s;
    //入栈

    s.stack_in(3);
    s.stack_in(4);
    s.stack_in(8);
    s.stack_in(6);
    s.stack_in(5);

    //展示栈内元素
    cout<<"s:";
    s.stack_show();

    cout<<s.stack_out()<<"出栈成功"<<endl;
     //展示栈内元素
     cout<<"s:";
     s.stack_show();
     //获取栈的大小
     cout<<"此时栈内元素的数量为:"<<s.stack_size()<<endl;
     //栈顶元素为
     cout<<"栈顶元素为:"<<s.stack_get_top()<<endl;
     //清空栈
     s.stack_clear();
     cout<<"栈清空成功"<<endl;
     //展示栈内元素
     cout<<"s:";
     s.stack_show();


    return 0;
}

测试

2、

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

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

3、思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/997968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

业务安全详解

文章目录 一、 业务安全概述1.1 业务安全现状1.1.1 业务逻辑漏洞1.1.2 黑客攻击的目标 二、 业务安全测试2.1 业务安全测试流程2.1.1 测试准备2.1.2 业务调研2.1.3 业务建模2.1.4 业务流程梳理2.1.5 业务风险点识别2.1.6 开展测试2.1.7 撰写报告 三、 业务安全经典场景3.1 业务…

【Java 基础篇】Java Set 集合详解:轻松管理不重复元素

在 Java 编程中&#xff0c;集合是一个非常重要的概念&#xff0c;它允许我们有效地存储和管理一组对象。其中之一是 Set 集合&#xff0c;它是一种无序、不重复的数据结构&#xff0c;非常适合用于存储不重复的元素。本篇博客将深入探讨 Java 中的 Set 集合&#xff0c;从基本…

数电课程设计——课设二:交通信号灯

一、实验内容 &#xff08;1&#xff09;十字路口有 x、y 方向两组交通信号灯&#xff0c;每组有红、黄、绿灯各一个&#xff1b; &#xff08;2&#xff09;设计一个交通灯控制电路&#xff0c;模拟十字路口交通灯工作情况&#xff0c;红灯亮 35s&#xff0c;黄灯亮 5s&…

IP的基础知识

IP IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。 设计IP的目的是提高网络的可扩展性&#xff1a;一是解决互联网问题&#xff0c;实现网络的互联互通&#xff1b;二是解除顶层网络应用和底层网络技术之间的耦合。 根据端到端…

btree学习笔记

简介 btree&#xff1a;balance tree&#xff0c;平衡多叉树&#xff0c;类比avl&#xff1a;平衡二叉树&#xff0c;都是有平衡的属性 (多个子树高度一致)&#xff0c;只不过是二叉和多叉的区别。 使用场景 文件系统如extfs、jffs&#xff0c;sql&#xff0c;磁盘上的索引查…

VirtualBox(内有Centos 7 示例安装)

1常见概念以及软件安装 1.1 虚拟化技术&#xff1a; 虚拟化技术指的是将计算机的各种硬件资源加以抽象、转换、分割&#xff0c;最后组合 起来的技术。其目的和作用主要是打破硬件资源不可分的情况&#xff0c;方便程序员自 己集成所需资源。 1.2 Virtual Box 其是虚拟化技术作…

[源码系列:手写spring] IOC第十三节:Bean作用域,增加prototype的支持

为了帮助大家更深入的理解bean的作用域&#xff0c;特意将BeanDefinition的双例支持留到本章节中&#xff0c;创建Bean,相关Reader读取等逻辑都有所改动。 内容介绍 在Spring中&#xff0c;Bean的作用域&#xff08;Scope&#xff09;定义了Bean的生命周期和可见性。包括单例和…

【redis进阶】基础知识简要回顾

1. 常见功能介绍 聚合统计 使用list集合的差集、并集来统计 排序统计 SortedSet&#xff08;ZSet&#xff09;统计&#xff0c;再利用分页列出权重高的元素 二值状态统计 BitMap存储&#xff0c;获取并统计 SETBIT uid:sign:3000:202008 2 1 GETBIT uid:sign:3000:202008 2…

Linux动态链接懒加载

Linux动态链接懒加载 懒加载 最近一个名词——懒加载&#xff0c;是一种与动态链接相关的技术&#xff0c;我对它有点感兴趣&#xff0c;于是决定深入了解一番。 懒加载是一种延迟加载资源的策略&#xff0c;它将资源的加载推迟到在首次访问或需要时才执行。这意味着在应用程…

Paper: 利用RNN来提取恶意软件家族的API调用模式

论文 摘要 恶意软件家族分类是预测恶意软件特征的好方法&#xff0c;因为属于同一家族的恶意软件往往有相似的行为特征恶意软件检测或分类方法分静态分析和动态分析两种&#xff1a; 静态分析基于恶意软件中包含的特定签名进行分析&#xff0c;优点是分析的范围覆盖了整个代码…

【Unity3D】UI Toolkit自定义元素

1 前言 UI Toolkit 支持通过继承 VisualElement 实现自定义元素&#xff0c;便于通过脚本控制元素。另外&#xff0c;UI Toolkit 也支持将一个容器及其所有子元素作为一个模板&#xff0c;便于通过脚本复制模板。 如果读者对 UI Toolkit 不是太了解&#xff0c;可以参考以下内容…

《AI辞职信一键生成》告别凡俗套路,展现独特个性!

在这个科技日新月异的时代&#xff0c;我们的生活被各种应用软件深深地渗透。其中&#xff0c;讯飞星火AI大模型的应用无疑是一种创新和突破。最近&#xff0c;我有幸体验了一款名为《AI辞职信一键生成》的web应用&#xff0c;它以其独特的功能和出色的用户体验&#xff0c;让我…

微信小程序Day2笔记

1、WXML模板语法 1. 数据绑定 数据绑定的基本原则 在data中定义数据在WXML中使用数据 2. 在data中定义页面的数据 在页面对应的.js文件中&#xff0c;把数据定义到data对象中。 3. Mustache语法的格式 把data中的数据绑定到页面中渲染&#xff0c;使用Mustache语法&…

不推介使用裸指针的几种情况

情况一&#xff1a; //原生指针没有所有权 void f() {// 不好: 原生指针拥有了所有权int* p1 new int{7}; // ... }template<typename T> class X {public:T* p; // 不好: 不清楚 p 所有权T* q; // 不好: 不清楚 q 所有权// ... };// 不好: 不清楚返回值所有权 Gadget*…

机器学习:自然语言处理上的对抗式攻击

Attacks in NLP 相关话题 Introduction 以前的攻击专注于图像和语音上&#xff0c;而NLP上的内容比较少。而NLP的复杂度跟词典有关系&#xff1a; NLP只能在embedding后的特征上加噪声 Evasion Attacks 电影的评论情感分类&#xff0c;将film换成films后&#xff0c;评论从…

637. 二叉树的层平均值

637. 二叉树的层平均值 题目-简单难度示例1. bfs 题目-简单难度 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&…

DQN模型

1. DQN模型 References [1] 强化学习第五节&#xff08;DQN&#xff09;【个人知识分享】_哔哩哔哩_bilibili

在MDK-Keil中开发S32K144

对于NXP的S32K1xx系列MCU&#xff0c;前面已经介绍过&#xff0c;官方有专门支持该系列MCU开发的IDE工具——S32DS&#xff0c;这个工具还有对应的代码生成配置工具&#xff0c;而且也是官方推荐使用的工具。 S32DS开发环境是基于Eclipse改写的&#xff0c;熟悉Eclipse的话可以…

python使用百度AipOCR来实现图像文字识别

上篇文字讲到了可以截屏手机模拟器上的界面并传回电脑上&#xff0c;文章链接 python将手机模拟器截屏并发送至电脑上_小小爬虾的博客-CSDN博客 传回来以后&#xff0c;就可以识别出图片中的文字内容了。 我使用的是Python3.10.4&#xff0b;百度的AipOCR库实现图像文字识别…