实验四 静态成员与友元
1、实验目的
(1)学习静态成员的使用,理解静态成员的特殊用途。
(2)学习友元函数及友元类,领会友元类的作用。
2、实验内容
应用VC++6.0的编辑环境构造一个类Stack,设计一个整数链表类,实现栈操作。类中需有记录结点个数的数据成员(静态成员),要有判空操作。编制应用程序,取100次随机数(<1000),如果取到的随机数比前一个随机数大的话,入栈,然后逐个取出(即出栈过程)求其和。
用堆分配方法逐个产生满足条件(递增有序)的结点,插入栈中,每当出栈时,要及时将结点删除,求和工作放在类定义外(友元)。
注意:栈中最多会有100个元素,最少会有一个元素,这是由条件(递增有序)决定的。
具体说明如下:
struct SNode{
int data;
SNode *next;
};
class Stack{
public:
Stack();
~Stack();
void Push(int e); //insert a data into stack
int Pop(); //delete a data from stack
friend int GetSum(Stack &); //get sum of stack,friend function
//friend class getsum;// get sum of stack,friend class,you can try it using friend class
static int num; //static number
private:
SNode *head;
};
对栈的入栈过程与出栈过程说明如下:
(1) 入栈,即向栈中添加一个元素,且该元素只能添加到当前链表最后一个数据元素之后,此时记录数组元素数据个数的变量应该进行++操作;
(2) 出栈,即从链表中删除一个数据元素,且该元素只能是当前栈中最后的一个元素,此时记录数据元素个数的变量应该进行--操作,也就是说,入栈及出栈的操作标识实际上是由记录数组中数据元素个数的变量实现的。
(3) 判空,即判断当前栈(即链表)是否为空,也就是判断记录数组中数据元素个数的变量是否为0。
分享到:
相关推荐
操作系统实验第四次的任务主要聚焦在进程调度、系统调用和同步原语的理解与实现上。实验基于《Orange’s》第六章的内容,要求在已经建立的nasm+bochs实验平台上模拟特定的进程调度问题。 首先,你需要实现进程调度...
操作系统实验第四次主要聚焦于进程调度、系统调用的实现以及PV操作的模拟,特别是针对读者写者问题的解决。这次实验旨在加深对操作系统核心概念的理解,如进程、系统调用、同步原语以及调度策略。 首先,我们需要...
【四川大学汇编语言第四次实验报告】主要探讨了在汇编语言中如何设计和调试分支与循环结构的程序。实验旨在让学生掌握无条件转移、条件转移以及循环控制指令的运用,以实现程序流程的控制。 1. **无条件转移指令 ...
国开数据库应用技术第四次形考作业实验 实验目的:通过使用SSMS工具,练习对数据库中的数据表进行单表查询、多表连接查询、子查询。对数据表中的数据进行更改和删除等操作。 实验要求:将相关的SQL 语句和运行结果的...
本次实验是朱全银老师的指导下进行的第四次信号与系统实验,其难度较高,但通过实践可以深化对理论的理解。这里将对本次实验的主要内容进行详细的解析。 信号与系统的研究对象主要是信号,包括连续时间信号和离散...
第4题可能涉及到数组的使用,如遍历数组并进行特定操作。在第2部分的题目中,你可能会遇到更复杂的编程任务,如设计一个简单的类或者实现多态性。 2. 报告的重点在于实验结果的展示,分析和总结,而不是展示源代码...
第一次实验课要求学生画出电路图,第二次和第三次实验课要求写出VHDL程序,第四次实验课要求划分模块并画出模块电路连接图,同时写出VHDL程序。这些要求的目的是让学生在实验之前对即将进行的实验有充分的了解和准备...
"计算机网络实验教程第四章第一次实验" 本次实验是计算机网络实验教程第四章的第一次实验,实验的主要目的在于让学习者进一步了解和掌握网络层的原理和网络设备配置。 实验题目:网络层实验 实验目的:通过本次...
这篇实验报告主要涵盖了华南理工大学微机课程的第四次实验,旨在深化学生对计算机系统基础的理解。实验通常包括编程实践、硬件模拟以及对计算机内部工作原理的探究。在这个实验中,学生可能会接触到以下几个关键知识...
【数字信号第四次实验】是关于数字滤波器设计与应用的一个实践环节,主要借助于Matlab软件进行。实验旨在让学习者掌握数字滤波器的设计原理和方法,包括IIR(无限 impulse response)和FIR(有限 impulse response)...
ARM指令集仿真实验第四课主要探讨了两个关键知识点:一是使用ARM汇编的for循环语句和将多个源文件编译成一个执行文件,二是汇编语言与C语言的混合编程。实验在HP战66笔记本电脑上进行,利用AMD Ryzen 5 3500U处理器...
- **使用roots求全部根**:对于多项式方程,还可以直接使用`roots`函数求所有根,例如`r=roots([2,-3,4,-5]);`。 ### 2. 求解二阶微分方程 MATLAB提供了强大的工具箱来解决各种微分方程问题,包括`ode23`等函数。...
4. **实验要求**:要求学生能够熟练使用DDL(Data Definition Language)语句,如CREATE、ALTER和DROP,以及DML(Data Manipulation Language)语句,如INSERT、UPDATE和DELETE,同时理解视图在数据抽象和权限控制中...
实验要求处理1000000个浮点数,每个数精确到小数点后4位。为了高效地解决这个问题,可以设计不同的线程策略,例如: 1. 单线程:所有计算在一个线程中完成,没有并发,但简单易懂。 2. 单线程带睡眠:在计算过程中...
在重庆大学的操作系统课程中,实验是学习的重要环节,尤其是第二次实验,重点涉及了线程和进程的调用。这个实验旨在帮助学生深入理解这两种并发执行的基本单元。 线程与进程是操作系统中并发执行的两种主要方式。...
【东南大学计算机与网络第四次实验】主要涵盖了网络通信中的应用层协议设计和TCP/IP的Socket编程实践。实验旨在让学生掌握应用层协议的基本概念、结构和功能,以及如何利用Socket接口编写网络通信程序,实现数据传输...
实验中,随着抽样点数的增加和抽样间隔的减小,积分的精度逐步提高,直到满足误差要求。 在提供的代码中,两个Monte Carlo方法的实现都遵循了类似的策略:不断增加抽样点,减小抽样间隔,比较前后两次积分的差异,...
《模式识别(第四版)上机实验》是一个关于统计学和机器学习的实践课程,旨在让学生深入理解模式识别的基本概念和方法。实验的核心是通过Matlab编程来处理二维随机数,涉及的主要知识点包括: 1. **多元正态分布**...
在本次西工大软件学院的第一次实验中,学生们深入探讨了信号的表示、运算、傅里叶级数展开以及信号通过连续时间系统的响应。 实验的主要目标在于掌握以下几个方面: 1. **信号的表示及其可视化**:学生需要了解...