面向对象第四次实验

实验四 静态成员与友元

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。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-18 05:19:57

面向对象第四次实验的相关文章

面向对象第四次实验参考代码

#include <iostream.h> #include <stdlib.h> #include <time.h> #define NULL 0 struct SNode{ int data; //data domain SNode *next; //pointer domain }; class Stack{ public: Stack(); ~Stack(); void Push(int e); //insert a data into stack int Po

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

20135239益西拉姆第四次实验报告

北京电子科技学院(BESTI) 实验报告 课程:JAVA第四次实验报告 班 级: 1352 姓 名:益西拉姆 学 号:20135239 成 绩: / 指导教师: 娄嘉鹏 实验日期: 2015.06.09 实验密级: / 预习程度: / 实验时间:15:00--18:00 仪器组次:39 必须/选修: 选修 实验序号:04 实验名称: 第四次实验 实验仪器: 名称 型号 数量 PC机 DELL 1 实验内容: 1:编写网络通信程序.(基于TCP) 2:对通信内容使用对称加密算法进行加密. 3:使用

C++第四次实验——派生和继承1

一.问题及代码: /* * 文件名称:c++第四次实验--派生和继承1.cpp * 作 者:郭宇辉 * 完成日期:2016年 4 月 25 日 --草稿 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:根据一声明好的类及测试函数完成成员函数. * 输入描述:无 * 问题描述: * 程序输出:略 * 问题分析:略 * 算法设计:略 */ #include<iostream> #include<string> using namespace std; class Stu //

20165104-Java第四次实验

20165104-Java第四次实验 任务一 实验内容 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Studio 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分 学习Android Stuidio调试应用程序 实验步骤 下载Android Studio并按教程安装 下好.

南京邮电大学java第四次实验报告

实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 6 月 7 日 指导单位 计算机学院软件教学中心 指导教师 许棣华 学生姓名 王利国 班级学号 B160209 学院(系) 电子与光学工程学院,微电子学院 专    业 微电子科学与工程 实验名称 方法.数组和类 指导教师 许棣华 实验类型 上机 实验学时 2 实验时间 2017.6.7 一.    实验

2019春第四次实验报告

2019春第四次实验报告 一.实验项目名称 flappy bird 二.实验项目功能描述 用户通过空格键控制小鸟躲过障碍物 三.项目模块结构介绍 四.实现界面展示 五.代码托管链接 https://gitee.com/wenyizhang999/ZWY/blob/master/%E5%B0%8F%E9%B8%9F.cpp 六.实验总结 问题:没有声音,没有图片 解决方法:根据书上提供的材料下载图片,在根据要求的格式上传文件地址 总结:第五章内容和以前学的东西联系上了,文件的储存及使用,越到后期越

第四次实验报告:RIP路由协议的解析

第四次实验报告:RIP路由协议的解析 姓名:王璐璐 学号:201821121037 班级:计算1812 0 摘要 在此次实验中,通过对两个路由器之间的路由表的建立与更新情况的分析,解析RIP路由协议,以此了解网络层的工作原理. 1 实验目的 理解RIP路由表的建立与更新 感受RIP坏消息传得慢 2 实验内容 使用Packet Tracer,正确配置网络参数,使用命令查看和分析RIP路由信息. 建立网络拓扑结构 配置参数 分析RIP路由信息 3 实验报告 下面将在两台PC机之间连接两台路由器,配置

C语言程序设计报告第四次实验

实验项目: 5.3.1-2.5.3.2-2.5.3.4.5.3.5-1.5.3.5-2.5.3.5-3.九九乘法表 姓名:罗志明 实验地点:家里 实验时间:2020年4月9日 一.实验目的与要求 1.熟练地掌握while,do_while及for语句实现循环的方法. 2.了解3种循环语句的区别和转换.各自的适应性.循环嵌套的使用. 3.掌握如何在循环语句种使用break,continue语句,改变程序流程. 4.掌握在程序设计种用循环的方法实现各种算法.C程序设计实验报告 二.实验内容 1.实验