C++

Wesley13
• 阅读 737
#include <iostream>
using namespace std;
class Goods
{
public:
    Goods()                  //货物的无参构造
    {
        weight = 0;
        next = NULL;
        cout << "创建了一个重量为" << weight << "的货物" << endl;
    }
    Goods(int w)             //传进一个重量为w的货物,且仓库的总重量加上w
    {
        weight = w;
        next = NULL;         //每创建一个货物,其指针域要为空,否则会出现乱码
        a_weight += w;
        cout << "创建了一个重量为" << weight << "的货物" << endl;
    }
    ~Goods()                //仓库减少这个重量的货物
    {
        cout << "删除了一箱重量为" << weight << "的货物" << endl;
        a_weight -= weight;
    }
    Goods *next;             //定义每个类的指针域,用于链表的连接
    static int sum()        //定义静态统计函数,用于返回私有的静态成员变量
    {
        return a_weight;
    }
private:
    int weight;
    static int a_weight;     //统计仓库的总重量
};
int Goods::a_weight = 0;     //静态成员的初始化

void buy(Goods *&head, int w)  //定义进货函数,形参为引用,或者二级指针,目的是为了能够通过函数修改主函数名为head的链表
{
    Goods *new_goods = new Goods(w); 
    if (head == NULL)
    {
        head = new_goods;
    }
    else
    {
        new_goods->next = head;    //在表头插入,此步骤意为新传入的w的next指向头指针head所指向的地址,即原链表的第一个元素
        head = new_goods;          //修改表头指针使表头指针指向新添加的w的地址空间
    }
}

void sale(Goods *&head)        //定义出货函数,形参为引用,目的是为了能够通过函数修改主函数名为head的链表
{
    if (head == NULL)
    {
        cout << "仓库已经没有货物了" << endl;
    }
    else {
        Goods *temp = head;       //建立一个临时temp,使其指向Head指向的第一个元素的地址
        head = head->next;        //修改头指针,使其指向第二个元素
        delete temp;
        cout << "saled..." << endl;
    }
}
int main()
{
    int choice;
    int w;             //定义需要进货的货物的重量的变量w
    Goods *head = NULL;
    do {
        cout << "------------------------" << endl;
        cout << "          1.进货        " << endl;
        cout << "          2.出货        " << endl;
        cout << "          0.退出        " << endl;
        cout << "------------------------" << endl;
        cin >> choice;
        switch (choice)
        {
        case 1:
            //进货
            cout << "请输入需要进货的货物的重量" << endl;
            cin >> w;
            buy(head, w);    //传进链表和重量w
            break;
        case 2:
            //出货
            sale(head);      //传进链表
            break;
        case 0:
            return 0;
        default:
            break;
        }
        cout << "当前仓库的总重量为" << Goods::sum() << endl;
    } while (1);

    system("pause");
    return 0;
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c
Stella981 Stella981
3年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Github标星5300+,专门为程序员开发文档开源管理系统,我粉了
!(https://oscimg.oschina.net/oscnet/a11909a041dac65b1a36b2ae8b9bcc5c432.jpg)码农那点事儿关注我们,一起学习进步!(https://oscimg.oschina.net/oscnet/f4cce1b7389cb00baaab228e455da78d0
Stella981 Stella981
3年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这