C++

1#include <iostream> 2using namespace std; 3class Goods 4{ 5public: 6 Goods() //货物的无参构造 7 { 8 weight = 0; 9 next = NULL; 10 cout << "创建了一个重量为" << weight << "的货物" << endl; 11 } 12 Goods(int w) //传进一个重量为w的货物,且仓库的总重量加上w 13 { 14 weight = w; 15 next = NULL; //每创建一个货物,其指针域要为空,否则会出现乱码 16 a_weight += w; 17 cout << "创建了一个重量为" << weight << "的货物" << endl; 18 } 19 ~Goods() //仓库减少这个重量的货物 20 { 21 cout << "删除了一箱重量为" << weight << "的货物" << endl; 22 a_weight -= weight; 23 } 24 Goods *next; //定义每个类的指针域,用于链表的连接 25 static int sum() //定义静态统计函数,用于返回私有的静态成员变量 26 { 27 return a_weight; 28 } 29private: 30 int weight; 31 static int a_weight; //统计仓库的总重量 32}; 33int Goods::a_weight = 0; //静态成员的初始化 34 35void buy(Goods *&head, int w) //定义进货函数,形参为引用,或者二级指针,目的是为了能够通过函数修改主函数名为head的链表 36{ 37 Goods *new_goods = new Goods(w); 38 if (head == NULL) 39 { 40 head = new_goods; 41 } 42 else 43 { 44 new_goods->next = head; //在表头插入,此步骤意为新传入的w的next指向头指针head所指向的地址,即原链表的第一个元素 45 head = new_goods; //修改表头指针使表头指针指向新添加的w的地址空间 46 } 47} 48 49void sale(Goods *&head) //定义出货函数,形参为引用,目的是为了能够通过函数修改主函数名为head的链表 50{ 51 if (head == NULL) 52 { 53 cout << "仓库已经没有货物了" << endl; 54 } 55 else { 56 Goods *temp = head; //建立一个临时temp,使其指向Head指向的第一个元素的地址 57 head = head->next; //修改头指针,使其指向第二个元素 58 delete temp; 59 cout << "saled..." << endl; 60 } 61} 62int main() 63{ 64 int choice; 65 int w; //定义需要进货的货物的重量的变量w 66 Goods *head = NULL; 67 do { 68 cout << "------------------------" << endl; 69 cout << " 1.进货 " << endl; 70 cout << " 2.出货 " << endl; 71 cout << " 0.退出 " << endl; 72 cout << "------------------------" << endl; 73 cin >> choice; 74 switch (choice) 75 { 76 case 1: 77 //进货 78 cout << "请输入需要进货的货物的重量" << endl; 79 cin >> w; 80 buy(head, w); //传进链表和重量w 81 break; 82 case 2: 83 //出货 84 sale(head); //传进链表 85 break; 86 case 0: 87 return 0; 88 default: 89 break; 90 } 91 cout << "当前仓库的总重量为" << Goods::sum() << endl; 92 } while (1); 93 94 system("pause"); 95 return 0; 96}
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

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

C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c

Linux查看GPU信息和使用情况

1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid