C++ 第三讲

1 >手动封装一个顺序栈类(数据元素为整形),要求私有成员属性:堆区空间的指针,用于存放数据,和一个指向栈顶元素的变量

main.cpp

#include "zuoye.h"int main()
{//实例化对象My_stack Stck;My_stack &st = Stck;//入栈Stck.My_pop(st);//出栈Stck.My_push(st);int key = Stck.My_get(st);cout << "栈顶元素 >>> " << key << endl;return 0;
}

head.h

#ifndef ZUOYE_H
#define ZUOYE_H#include <iostream>using namespace std;#define N 10class My_stack
{
private:int *ptr;int top;public:My_stack():ptr(new int [N]), top(-1) {cout << "顺序栈创建成功" << endl;}~My_stack() {delete []ptr;cout << "顺序栈退出成功" << endl;}//判空bool My_empty(My_stack &st);//判满bool My_full(My_stack &st);//入栈void My_pop(My_stack &st);//出栈void My_push(My_stack &st);//遍历void My_show(My_stack &st);//栈顶元素的引用int My_get(My_stack &st);
};#endif // ZUOYE_H

test.cpp

#include "zuoye.h"//判空
bool My_stack :: My_empty(My_stack &st){if(-1 == st.top){return true;}return false;
}
//判满
bool My_stack :: My_full(My_stack &st){if(N-1 == st.top){return true;}return false;
}
//入栈
void My_stack :: My_pop(My_stack &st){char ch = '\0';int key = 0;while(1){//入栈cout << " 是否入栈 Y/N >>> " ;cin >> ch;if(ch == 'Y' || ch == 'y'){cout << " 请输入要入栈的值 >>> " ;cin >> st.ptr[++(st.top)];}else{break;}//判满key = My_full(st);if(1 == key){cout << "栈满" << endl;break;}}My_show(st); //遍历
}void My_stack :: My_push(My_stack &st){bool key;char ch = 0;while(1){key = My_empty(st);//判空if(1 == key){cout << "栈空" << endl;break;}cout << " 是否出栈 Y/N >>>";cin >> ch;//出栈if(ch == 'Y' || ch == 'y'){cout << " 出栈的值为 >>>" << st.ptr[(st.top)--];}else{break;}}My_show(st);  //遍历
}
//遍历
void My_stack :: My_show(My_stack &st){int i = 0;for(;i <= st.top ; i++){cout << st.ptr[i] << "  ";}cout << endl;
}
//栈顶元素引用
int My_stack :: My_get(My_stack &st){return st.ptr[st.top];
}

2 >思维导图

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字图像学笔记 —— 19.肤色检测

文章目录 什么是肤色检测需要使用OpenCV函数颜色空间转换颜色范围位运算 什么是肤色检测 在没有AI之前&#xff0c;肤色检测是计算机视觉的一项常见任务。其根本思路是划定一个颜色区域&#xff0c;只要属于该颜色区域的像素就认为属于肤色。但是这种方法的精确度不高&#xf…

ubuntu中下载、构建、使用raylib

目录 先决条件 [1]下载raylib方式一方式二 构建 [1]使用终端中使用Clion中使用 先决条件 [1] ubuntu系统上需要先安装GCC, make(或者cmake)和git (下载raylib) 执行下面的命令可以安装GCC,make,cmake,git sudo apt install build-essential git #build-essential是一套工具集…

leetcode 445. Add Two Numbers II(两数相加)

用链表代表2个数字&#xff0c;这2个数字相加的和用链表返回。 最高位在链表的head. 思路&#xff1a; 1.链表逆序 数字相加是从低位到高位的&#xff0c;然而链表中的数字是从高位指向低位。 所以涉及到链表的逆序。 逆序之后只需从head到tail把两个链表的数字相加&#x…

Windows安装激活注意事项

选择语言、版本&#xff08;Windows 10指的是专业版本&#xff09;和体系结构&#xff08;32位/64位&#xff09;&#xff0c;这里自行根据情况选择&#xff08;如果机器预装的是Windows 10家庭中文版则选择家庭中文版&#xff0c;如果预装的是专业版则选择Windows 10。这样原先…

使用IDEA构建jar然后转执行程序exe的爬坑

https://download.csdn.net/download/leoysq/87939492 构建jar

划片机的作用将晶圆分割成独立的芯片

划片机是将晶圆分割成独立芯片的关键设备之一。在半导体制造过程中&#xff0c;晶圆划片机用于将整个晶圆切割成单个的芯片&#xff0c;这个过程被称为“晶圆分割”或“晶圆切割”。 晶圆划片机通常采用精密的机械传动系统、高精度的切割刀具和先进的控制系统&#xff0c;以确保…

018 - STM32学习笔记 - SPI读写FLASH(三)- 写入字符串、小数与整数

018 - STM32学习笔记 - SPI访问Flash&#xff08;三&#xff09;- 写入字符串、小数与整数 上节对Flash的跨页写入数据进行了完善&#xff0c;但是数据写入都是以Byte数组的方式进行写入&#xff0c;这节分别进行字符串的写入和小数整数的写入&#xff0c;本节内容对SPI的函数…

Storage、正则表达式

1 LocalStorage 2 SessionStorage 3 正则表达式的使用 4 正则表达式常见规则 5 正则练习-歌词解析 6 正则练习-日期格式化 Storage-Storage的基本操作 // storage基本使用// 1.token的操作let token localStorage.getItem("token")if (!token) {console.log(&q…

Spring的创建和使用

目录 Spring的创建1.创建一个普通的Maven项目2.添加spring框架支持3.添加启动类 存储Bean对象1. 创建Bean2.将Bean注册到容器当中 获取并使用Bean对象1.得到Spring上下文2. 获取指定Bean对象3. 使用Bean对象 总结 Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下…

CloudCompare——M3C2计算两点云之间的鲁棒距离

目录 1.概述2、计算原理3、操作流程 本文由CSDN点云侠原创&#xff0c;原文链接。爬虫网站请自重。 M3C2 (plugin) 1.概述 CloudCompare中的Plugins -> M3C2 Distance 功能是用来计算两组点云间的鲁棒距离的特别方法。从CloudCompare-2.9版开始&#xff0c;M3C2插件还包括…

隐私计算大会亮点前瞻:《隐私计算应用研究报告(2023年)》发布预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。 本次大会将公开正式发布《隐私计算应用研究报告&#xff08;2023&#xff09;》、“隐…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }